找不到创建唯一随机数的方法...(宾果游戏)

时间:2019-11-21 17:35:35

标签: java arrays math

我正在创建一个程序,每次您玩时都会生成一个随机的宾果卡。我不知道如何不获得重复的随机数。我总是至少得到两个相同的数字。我尝试了许多不同的方法,但这是我最终得到的结果,并且仍然重复。请帮忙!

job("try-to-pass-array") {
    def sampleArray = ["one","two","three","four"]
    description("this is to test a element type")
    keepDependencies(false)
    parameters {
        activeChoiceReactiveParam('NUMBERS') {
            description('Choose numbers for which build has to be generated')
            choiceType('MULTI_SELECT')
            groovyScript {
                script('return $sampleArray')
                fallbackScript('"fallback choice"')
            }
        }
    }
    disabled(false)
    concurrentBuild(false)
    steps {
        shell('''
              echo $NUMBERS
              ''')
    }
}

2 个答案:

答案 0 :(得分:2)

假设您可以导入:

import java.util.ArrayList;
import java.util.Collections;

只需按顺序创建一个卡片组-然后将其随机化即可。从列表中删除一个项目,这样就不能多次选择(弹出)它。

        ArrayList<Integer> cards = new ArrayList<Integer>();

        // create a list in order
        for (int i = 1; i < 14; i++) {
            cards.add(i);
        }

        Collections.shuffle(cards); // randomize

        for (int i = 1; i < 14; i++) {
            cards.remove(i-1); // pop
            // do something with the card
        }

答案 1 :(得分:0)

如果您只需要随机的double,则可以在循环外实例化一个Random,并继续使用与random.nextDouble()相同的实例来获取伪随机数。

Random random = new Random();
for (int p = 0; p < b.length; p++) {
   b[p] = (int) (random.nextDouble() * 14 + 1);
   do {
      b[1] = (int) (random.nextDouble() * 14 + 1);
   } while (b[1] == b[0]);
...
}