簡體   English   中英

如何從數組中隨機生成數字,每個數字都是唯一的

[英]How to generate numbers from an array randomly,with each number being unique

我有一個數字數組,其中包含20個元素。我正在為黑莓應用程序隨機顯示數字,我希望生成的所有d數字應為b唯一。它應為b隨機生成,它具有b唯一,直到所有元素我在這里給出了一段代碼,如果有人可以幫助我,我將萬分感謝。

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();
    }
}

先隨機播放,然后迭代:

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

更新

OP的一些措辭使我認為Blackberry不支持Collections.shuffle()。 然后建議將Collections.shuffle(List,Random)的代碼復制到應用程序中。

您所描述的是僅對數組進行混洗的完美應用程序。

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));

現在,該數組已改組,您可以對其進行迭代。

您可以使用ArrayList代替Array並刪除每個生成的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM