2015-10-24 121 views
0

我正在做一个测验,但我希望所有问题都是随机的,但不要重复彼此。我有一个问题ID,我需要在每个问题后生成一个随机整数。我有6个问题。编号从1-7开始。Android - 生成非重复的随机数

我检查了不同的主题,但他们还没有解决我的问题。

这是我现在所拥有的代码,但它重复:

Random rnd = new Random(); 
    Integer n = rnd.nextInt(6) + 1; 

    qid=n; 
+0

所以你基本上说你选择X号码,并希望他们在随机序列。 (真正的随机数_do_偶尔重复) –

回答

2

把您的问题到一个数组,一旦洗牌阵列。按照洗牌顺序从阵列中挑选问题。这保证在所有问题都用尽之前不会重复。使用Collections.shuffle(myArray);进行洗牌。

+0

我试过这个解决方案,但是我怎么才能从一个集合中挑选数字呢? –

+0

按顺序选择洗牌后的数组元素:myarray [1],myArray [2],...使用索引变量跟踪数组在哪里。 – rossum

0

尝试这种方法,希望它可以帮助你。这种方法是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]); 
     } 
    } 
}