[英]Confused on how to generate unique random numbers for each column in an array
[英]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.