java.util.Random特性

Mar*_*ler 0 java random linux-mint

所以这是人们可能做的最简单的事情之一:

Random rng = new Random();
int a = rng.nextInt(10);
int b = rng.nextInt(10);
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但我们希望避免使用相等的a和b,所以我们自然会这样做:

Random rng = new Random();
int a = rng.nextInt(10);
int b = rng.nextInt(10);
while (a == b){
  b = rng.nextInt(10);
}
Run Code Online (Sandbox Code Playgroud)

然而 - 对我非常非常惊讶 - while循环永远不会退出.决不.

我理解,从理论上讲,随机数字可以包含一个数字的无限序列.但是我已经让这段代码运行了10分钟而且它还没有退出循环.

怎么了?我在最新的Linux Mint上运行JDK 6 Update 16.

Mar*_*ers 7

    Random rng = new Random();
    int a = rng.nextInt(10);
    int b = rng.nextInt(9);
    if (b >= a) ++b;
Run Code Online (Sandbox Code Playgroud)

问题解决了!