0

我需要 1、2、3 和 4 中的两个随机数,但它们不能相同,我需要它们在两个不同的变量中。

所以,像rnd1 = 1;and之类的东西rnd2 = 3;

我试图生成它们的经典风格:int rnd = new Random().nextInt(3) + 1;. 和另一个相同的方式,但如何确保它们不匹配?怎么做?

4

5 回答 5

8

与其自己实现随机性和唯一性,不如简单地用允许的数字填充一个列表,将其打乱并取前两个条目:

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Collections.shuffle(list);
rnd1 = list.get(0);
rnd2 = list.get(1);
于 2013-03-16T20:00:31.700 回答
6
Random random = new Random();
int rnd1 = random.nextInt(3) + 1;
int rnd2 = rnd1;
while(rnd2 == rnd1) {
    rnd2 = random.nextInt(3) + 1;
}
于 2013-03-16T19:59:32.547 回答
3

好吧,最简单的方法可能是:

Random random = new Random();
int rnd1 = random.nextInt(3) + 1;
int rnd2;
do {
    rnd2 = random.nextInt(3) + 1;
} while (rnd1 == rnd2);
于 2013-03-16T20:00:39.363 回答
1

将第一个值分配给第二个值,然后使用 while 循环,直到两个值不相等。

int rnd = new Random().nextInt(3) + 1;
int rnd2 = rnd;

while(rnd2 == rnd){
  rnd2 = new Random().nextInt(3) + 1;
}
于 2013-03-16T19:59:20.613 回答
-1
    int one, two;
    Random r = new Random();
    one = r.nextInt(3) + 1;
        two = r.nextInt(3) + 1;
    while (one == two){
            two = r.nextInt(3) + 1;
于 2013-03-16T20:00:14.827 回答