我想随机生成一个数组,&每个号码也应该是唯一的,我给的是一段代码。请帮助我,& 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;
}
答案 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;
}
从你的问题中你的要求并不是很清楚 - 验证你是否正在思考正确的方向?如果这个答案对您没有帮助,请澄清问题(理想情况下没有文字说明的缩写)。