как случайным образом сгенерировать уникальное число из массива в Java - PullRequest
2 голосов
/ 22 июня 2010

я хочу генерировать числа из массива случайным образом, и каждое число также должно быть уникальным, я даю кусок кода. Пожалуйста, помогите мне, & plz не советую для arraylist, bcoz я строю для приложения blackberry,& blackberry api не поддерживает arraylist, collection или hashset, поэтому, пожалуйста, предложите мне использовать массив только в виде фрагмента кода.

 Random rgen = new Random();  // Random number generator

    //--- Initialize the array 
    for (int i=0; i<20; i++) {
        quesNum[i] = i;
    }

// --- В случайном порядке меняйте каждый элемент

   for (int i=0; i< 20; i++) {
        int randomPosition = rgen.nextInt(20);

        int temp = quesNum[i];

        quesNum[i] = quesNum[randomPosition];

        quesNum[randomPosition] = temp;


    }

1 Ответ

4 голосов
/ 22 июня 2010

Ваш код почти в порядке, но вы должны использовать вместо него Fisher-Yates shuffle :

for (int i=0; i < 20; i++) {
    // Partition the array into "shuffled" at the start
    // and "unshuffled" at the end. Select a random
    // unshuffled one, and swap it with the one at the
    // border of shuffled/unshuffled
    int randomPosition = i + rgen.nextInt(20 - i);
    int temp = quesNum[i];
    quesNum[i] = quesNum[randomPosition];
    quesNum[randomPosition] = temp;
}

Из твоего вопроса было не совсем понятно, о чем ты просил - подтверждение того, что ты думал правильно? Если этот ответ не поможет, уточните вопрос (в идеале, без текстовых сокращений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...