如何从java中的数组中随机生成一个唯一的数字

时间:2010-06-22 16:38:35

标签: java blackberry

我想随机生成一个数组,&每个号码也应该是唯一的,我给的是一段代码。请帮助我,& PLZ dnt建议使用arraylist,bcoz我正在为黑莓应用程序构建,& blackberry api不支持arraylist或者集合或者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 个答案:

答案 0 :(得分:4)

您的代码几乎可以,但您应该使用修改后的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;
}

从你的问题中你的要求并不是很清楚 - 验证你是否正在思考正确的方向?如果这个答案对您没有帮助,请澄清问题(理想情况下没有文字说明的缩写)。