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.sqrt
或 Math.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.
我想在 java 中创建一个方法,我可以在其中输入最大和最小数字,它会给我一个随机数,但大数字比小数字更有可能。我该怎么做?
有很多方法可以做到这一点,具体取决于您所说的更高。您可以使用一个函数来扭曲您的分布。
int num = (int) (func(Math.random()) * (max - min)) + min;
您的 func
可能是 Math.sqrt
或 Math.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.