我正在做一个测验,但我希望所有问题都是随机的,但不要重复彼此。我有一个问题ID,我需要在每个问题后生成一个随机整数。我有6个问题。编号从1-7开始。Android - 生成非重复的随机数
我检查了不同的主题,但他们还没有解决我的问题。
这是我现在所拥有的代码,但它重复:
Random rnd = new Random();
Integer n = rnd.nextInt(6) + 1;
qid=n;
我正在做一个测验,但我希望所有问题都是随机的,但不要重复彼此。我有一个问题ID,我需要在每个问题后生成一个随机整数。我有6个问题。编号从1-7开始。Android - 生成非重复的随机数
我检查了不同的主题,但他们还没有解决我的问题。
这是我现在所拥有的代码,但它重复:
Random rnd = new Random();
Integer n = rnd.nextInt(6) + 1;
qid=n;
把您的问题到一个数组,一旦洗牌阵列。按照洗牌顺序从阵列中挑选问题。这保证在所有问题都用尽之前不会重复。使用Collections.shuffle(myArray);
进行洗牌。
我试过这个解决方案,但是我怎么才能从一个集合中挑选数字呢? –
按顺序选择洗牌后的数组元素:myarray [1],myArray [2],...使用索引变量跟踪数组在哪里。 – rossum
尝试这种方法,希望它可以帮助你。这种方法是8号
private void generateRandomNumber() {
int rnd; Random rand=new Random();
int[] randNo = new int[8];
ArrayList numbers = new ArrayList();
for (int k=0 ; k < 8; k++) {
rnd = rand.nextInt(8) + 1;
if(k==0) {
randNo[0] = rnd;
numbers.add(randNo[0]);
} else {
while(numbers.contains(new Integer(rnd))) {
rnd = rand.nextInt(8) + 1;
}
randNo[k] = rnd;
numbers.add(randNo[k]);
}
}
}
所以你基本上说你选择X号码,并希望他们在随机序列。 (真正的随机数_do_偶尔重复) –