Как сделать комбинированную матрицу случайных чисел - PullRequest
1 голос
/ 07 июля 2011

Мне трудно понять, как я могу сгенерировать дважды повторяющиеся случайные числа в диапазоне от 1 до 8 и сделать из него такую ​​матрицу:

5 8 2 5

3 6 4 1

7 6 2 3

4 7 8 1

Кстати, я планирую сделать это на Android.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 07 июля 2011

Полагаю, вам нужна рандомизированная матрица 4x4, содержащая все числа 1-8 дважды.

Вы можете легко превратить список из 16 чисел в матрицу 4x4. Так что вам нужен случайный список из 1-8 чисел.

List<Integer> list = new ArrayList<Integer>();
for (int i = 1; i <= 8; i++) {
  list.add(i);
  list.add(i);
}
// list  = [1,1,2,2,3,3,..,8,8];
Collections.shuffle(list);
// gives something like [1,4,5,2,4,7,..8,1]

Чтобы превратить этот список в матрицу, просто прочитайте строку за строкой, 4 цифры за раз.

0 голосов
/ 07 июля 2011

То, что вы действительно хотите, это не случайные числа. Но конкретный набор чисел в случайном порядке!

Итак, начните с необходимого набора в порядке возрастания

int[] mySet = Array{1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8}

Тогда сделайте что-то вроде

for (x = 1;99,x++) {
    from = (int)(Math.random()*8);
    to = (int)(Math.random()*8);
    if (from != to) {
       int swap = mySet[to];
       mySet[to] = mySet[from];
       mySet[from] = swap;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...