Java Назначение перестановки - PullRequest
0 голосов
/ 10 января 2020

Основной класс:

import java.util.List;
import java.util.Random;

public class PermutationGenerator{

    public static void main(String[] args) {
        Random bruh = new Random();

        List<Integer> filledArray = nextPermutation.fillArray();

        int[] randomArray = new int[10];
        for (int i = 0; i < randomArray.length; i++) {
            int randomPosition = bruh.nextInt(10 - i) + 1;
            randomArray[i] = filledArray.get(randomPosition);
            filledArray.remove(randomPosition);
        }

        System.out.print("List 1: ");
        printArray(randomArray);

    }

        public static void printArray(int[] array) {

        for (int i = 0; i < array.length; i++) {

            System.out.print(array[i] + " ");
        }


        System.out.println();
    }
}

Класс бегуна: `import java .util.ArrayList;

publi c класс nextPermutation {

public static ArrayList<Integer> fillArray() {
        ArrayList<Integer> randomArray = new ArrayList<Integer>();


        randomArray.add(0);
        randomArray.add(1);
        randomArray.add(2);
        randomArray.add(3);
        randomArray.add(4);
        randomArray.add(5);
        randomArray.add(6);
        randomArray.add(7);
        randomArray.add(8);
        randomArray.add(9);
        randomArray.add(10);



        return randomArray;

    }

} `

Я должен распечатать что-то вроде этого:

Список 1: 4 6 8 1 9 7 10 5 3 2

Список 2: 6 8 1 7 3 4 9 10 5 2

Список 3: 2 4 9 6 8 1 10 5 7 3

Список 4: 8 5 4 3 2 9 6 7 1 10

Список 5: 10 3 2 6 8 9 5 7 4 1

Список 6: 9 10 3 2 1 5 6 8 4 7

Список 7: 3 8 5 9 4 2 10 1 6 7

Список 8: 3 2 4 5 7 6 9 8 10 1

Список 9: 4 1 5 10 8 3 6 2 7 9

Список 10: 3 5 2 4 1 7 9 6 8 10

Но для меня это выводит только одну строку. Я думаю, что могу использовать для l oop, чтобы сделать это. В качестве альтернативы, я мог бы просто перебрать его, но я предпочитаю первое.

Мне нужна помощь, где и как я должен начать для l oop.

Любая помощь будет принята с благодарностью .

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Просто я определил вашу часть вашего кода методом mixArray()

Затем я добавил для l oop, который запускается 10 раз для печати 10 списков.

Для для l oop в printArray работает 10 раз, но печатает 1 число и пробел в каждом l oop, поэтому в конце вы получаете только 1 строку.

    for (int p = 1; p <= 10; p++) {
        mixArray();
        System.out.print("List "+p+": ");
        printArray(randomArray);
        System.out.println();
    }

    public static void mixArray() {
        for (int i = 0; i < randomArray.length; i++) {
            int randomPosition = bruh.nextInt(10 - i) + 1;
            randomArray[i] = filledArray.get(randomPosition);
            filledArray.remove(randomPosition);
        }
    }

Также вы можете хочу иметь в виду, что ваш метод рандомизации массива может вернуть вам дублированный массив. Шансы очень низкие, но это возможно.

0 голосов
/ 10 января 2020

много чище просто использовать Collections::shuffle

    List<Integer> filledArray = fillArray();
    for (int i = 0; i < 10; i++)
    {
        Collections.shuffle(filledArray);
        System.out.println(filledArray);
    }

выход

[7, 0, 3, 5, 2, 1, 9, 10, 4, 8, 6]
[3, 7, 6, 0, 1, 8, 4, 5, 9, 2, 10]
[3, 7, 2, 4, 9, 10, 0, 8, 5, 1, 6]
[8, 1, 0, 7, 4, 2, 3, 6, 10, 9, 5]
[2, 3, 8, 4, 5, 10, 9, 1, 6, 7, 0]
[10, 2, 0, 1, 5, 8, 7, 6, 9, 3, 4]
[1, 5, 0, 9, 2, 4, 6, 8, 10, 7, 3]
[2, 8, 1, 9, 7, 3, 5, 6, 10, 4, 0]
[9, 1, 2, 4, 6, 8, 0, 3, 10, 5, 7]
[4, 5, 2, 3, 10, 9, 6, 8, 0, 1, 7]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...