java 中较大数字的范围和概率较高的随机数生成器

Random number generator with range and higher probability for bigger numbers in java

我想在 java 中创建一个方法,我可以在其中输入最大和最小数字,它会给我一个随机数,但大数字比小数字更有可能。我该怎么做?

有很多方法可以做到这一点,具体取决于您所说的更高。您可以使用一个函数来扭曲您的分布。

int num = (int) (func(Math.random()) * (max - min)) + min;

您的 func 可能是 Math.sqrtMath.pow(x, n),其中 n < 1 支持更高的数字。

I would like it to be 10% more likely to have an answer over ten.

如果这是你的要求,你实际上有两个分布。

 private static final Random rand = new Random();
 public static int randBetween(int min, int max) {
       return rand.nextInt(max - min + 1) + min;
 }


 int next = rand.nextInt(100) < 10 ? // a 10% chance
            randBetween(10, max) : // random of at least 10
            randBetween(min, max); // otherwise any number.