简体   繁体   English

如何生成两个随机数(不重复)?

[英]How can I generate two random numbers(not repeated)?

I want to generate two numbers in range 0..99 in java and it has to be not repeated. 我想在Java中生成0..99范围内的两个数字,并且不必重复。 I tried code below but it is not working for me. 我在下面尝试了代码,但对我不起作用。

    int number1 = randomGenerator.nextInt(100);
    int number2 = randomGenerator.nextInt(100);

    if(number1 == number2){
        while (number1 != number2){
            number2 = randomGenerator.nextInt(100);
        }
    }

If number1 and number2 are equal, they will not be not equal. 如果number1number2相等,则它们将相等。 Just change your while loop: 只需更改您的while循环:

int number1 = randomGenerator.nextInt(100);
int number2 = randomGenerator.nextInt(100);

while(number1 == number2){
    number2 = randomGenerator.nextInt(100);
}

It's not working because you never enter your loop, because the condition is wrong. 这是行不通的,因为您永远不会进入循环,因为条件是错误的。 In the loop, you want == , not != . 在循环中,您需要== ,而不是!= You can also remove the if : 您也可以删除if

int number1 = randomGenerator.nextInt(100);
int number2 = randomGenerator.nextInt(100);

while (number1 == number2){
    number2 = randomGenerator.nextInt(100);
}
int number1 = randomGenerator.nextInt(100);
int number2 = randomGenerator.nextInt(99);
if(number2 >= number1) {
  ++number2;
}

Also check discussion about it at Generate random index different then any one given in a set 还可以在生成随机索引而不是集合中给定的任何索引时检查有关它的讨论

If they all have to be unique, you should add the results to a list. 如果它们都必须唯一,则应将结果添加到列表中。 Then, you can compare the current random number to each of the past results. 然后,您可以将当前随机数与过去的每个结果进行比较。

    Random random = new Random();
    int number1 = random.nextInt(100);
    int number2 = random.nextInt(100);
    List<Integer> randomsList = new ArrayList<Integer>();

    while (randomsList.contains(number1)){
        number1 = random.nextInt(100);
    }
    randomsList.add(number1);

    while (randomsList.contains(number2)){
        number2 = random.nextInt(100);
    }
    randomsList.add(number2);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM