【问题标题】:Android - Generate non-repetitive random numbers [duplicate]Android - 生成非重复随机数[重复]
【发布时间】:2015-10-24 14:08:12
【问题描述】:

我正在做一个测验,但我希望所有问题都是随机的,但不要重复。我有一个问题 ID,我需要在每个问题之后生成一个随机整数。我有 6 个问题。 ID 是从 1 到 7。

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

这是我现在的代码,但它重复了:

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

    qid=n;

【问题讨论】:

  • 所以你基本上说你选择 X 个数字并希望它们按随机顺序排列。 (真正的随机数偶尔重复)

标签: java android random


【解决方案1】:

将您的问题放入一个数组中,然后随机排列一次。按打乱顺序从数组中挑选问题。这保证在所有问题都用完之前不会重复。使用Collections.shuffle(myArray); 进行洗牌。

【讨论】:

  • 我已经尝试过这个解决方案,但是如何从一个集合中一个一个地挑选数字呢?
  • 按顺序选择洗牌的数组元素:myarray[1], myArray[2], ... 使用索引变量跟踪您在数组中的位置。
【解决方案2】:

试试这个方法,希望对你有帮助。此方法适用于 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]);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多