Как я могу сделать 2d массив, который имеет пары случайных элементов другого массива? - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь создать 2d массив, который имеет парные случайные элементы. Например, {{1,1,3,4}, {3,1,4,1}}. Для моего проекта я собираюсь использовать строки вместо чисел, так как я собираюсь создать игру из подходящих пар. Это моя попытка.

private String[] test = { "red", "orange", "yellow", "green", "blue", "indigo", "violet", "white" };
private final int DEFAULT_SIZE = 4;
private String[][] board = new String[DEFAULT_SIZE][DEFAULT_SIZE];
for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board.length; j++) {

                board[i][j] = test[rand.nextInt(7)];

            }
        }

Это дает мне массив, заполненный случайными элементами массива test. Я не знаю, что делать дальше, я тоже пытался это сделать, но я все еще не получаю пары для элементов массива.

private String[] temp = new String[DEFAULT_SIZE * 2];
temp[0] = board[0][0];
        temp[1] = board[0][1];
        temp[2] = board[0][2];
        temp[3] = board[0][3];
        temp[4] = board[1][0];
        temp[5] = board[1][1];
        temp[6] = board[1][2];
        temp[7] = board[1][3];
        for (int i = 2; i < DEFAULT_SIZE; i++) {
            for (int j = 0; j < DEFAULT_SIZE; j++) {
board[i][j] = temp[rand.nextInt(7)];
            }
        }

Это случайно, иногда я получаю 3 одинаковых элемента массива, что я не пытаюсь сделать. Я пытаюсь получить пары, что означает, что я могу иметь четное число одинаковых случайных элементов. Спасибо за ваше время!

1 Ответ

0 голосов
/ 06 октября 2019

Можете ли вы искать что-то вроде этого?

import java.util.Random;

class RandomPairGenerator {
  public static void main(String[] args) {
    String[] test = { "red", "orange", "yellow", "green", "blue", "indigo", "violet", "white" };
    RandomPairGenerator pairGenerator = new RandomPairGenerator();

    String[][] pairs = pairGenerator.randomPairs(test, 4);

    for (int i = 0; i < pairs[0].length; i++) {
      System.out.println(pairs[0][i] + " " + pairs[1][i]);
    }
  }

  String[][] randomPairs(String[] collection, int numberOfPairs) {
    Random random = new Random();
    String[][] pairs = new String[ 2 ][ numberOfPairs ];

    for (int i = 0; i < numberOfPairs; i++) {
      pairs[0][i] = collection[ random.nextInt(numberOfPairs) ];
      pairs[1][i] = collection[ random.nextInt(numberOfPairs) ];
    }

    return pairs;
  }
};

Чтобы сгенерировать свой двумерный массив, присвойте значения с использованием случайных индексов в исходном векторе.

...