如何生成三个不相等的数?

How to generate three unequal numbers?

这里是号码生成:

for( int i=0; i<3; i++) {
    int randomNumbers = random.nextInt(10) + 1; 
}

在这里我可以收到相同的数字。

例如:5,7,5;

但我只需要接收不同的号码:5,1,9

是否可以使用一些小代码或者我应该为它编写一些方法?

您可以使用仅包含唯一值的 Set

Set<Integer> randomInts = new HashSet();
while(randomInts.size() < 3) {
    randomInts.add(random.nextInt(10) + 1);
}

当然,您需要面对过采样,但如果性能不是最重要的,这种方法很容易扩展。

这里有一个方法可以避免rejection sampling:生成一个最多10、一个最多9、最多8的数字。通过递增来避免重复。这样可以保证均匀分布。

int a = random.nextInt(10) + 1;
int b = random.nextInt(9) + 1;
if(b >= a) { b++; }
int c = random.nextInt(8) + 1;
if(c >= (a > b ? b : a)) { c++; }
if(c >= (a > b ? a : b)) { c++; }

在我看来,使用while循环可以生成不同位数的随机数。使用while循环检查号码是否早先生成,如果是则生成新号码。