Как генерировать числа из массива случайным образом, каждый номер уникален - PullRequest
0 голосов
/ 19 июня 2010

У меня есть числовой массив, который содержит 20 элементов. Я отображаю числа случайным образом для приложения BlackBerry, но я хочу, чтобы все d сгенерированные числа были b уникальными.elemnts в массиве исчерпан. Я даю часть кода здесь, если кто-то может помочь мне, я буду чрезвычайно благодарен.

static int quesNum[] = new int[20];
static int quesCount = -1;

private static void initialize(){

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

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

    //--- Shuffle by exchanging each element randomly
    for (int i=0; i< quesNum.length; i++) {
        int randomPosition = rgen.nextInt(quesNum.length);

        int temp = quesNum[i];

        quesNum[i] = quesNum[randomPosition];

        quesNum[randomPosition] = temp;

    }
}

/*Changed the code to get a unique random number

*/
public static int getQuestionNumber() {
    quesCount++;
    if(quesCount < quesNum.length){
        return quesNum[quesCount];
     }
    else{ 
       initialize();
       quesCount = -1;
       return getQuestionNumber();
    }
}

Ответы [ 4 ]

3 голосов
/ 19 июня 2010

Сначала перемешайте, затем итерируйте:

Collections.shuffle(listOfValues);
for(Integer val : listOfValues) {
  // give it to user
}

ОБНОВЛЕНИЕ

Некоторые формулировки OP заставляют меня думать, что Collections.shuffle () не поддерживается Blackberry.Тогда советуем скопировать код Collections.shuffle (List, Random) в приложение.

2 голосов
/ 19 июня 2010

То, что вы описываете, является идеальным приложением для перетасовки массива.

0 голосов
/ 19 июня 2010
int len = 20;
Integer[] arr = new Integer[len];
for(int i =0;i<len;i++){
    arr[i] = Integer.valueOf(i+1);
}
Collections.shuffle(Arrays.asList(arr));

Теперь массив перемешан, и вы можете перебирать его.

0 голосов
/ 19 июня 2010

Вы можете использовать ArrayList вместо Array и удалять каждое сгенерированное число.

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