在 Java 中,您如何生成一个随机数,但使该随机数偏向于特定数字。例如,我想生成一个介于 1 和 100 之间的数字,但我希望该数字偏向于 75。但我仍然希望有可能获得该范围内的其他数字,但我希望更多地改变获取数字接近 75,而不是仅仅在整个范围内获取随机数。谢谢
最佳答案
问题有点老了,但如果有人想在没有特殊情况处理的情况下这样做,你可以使用这样的函数:
final static public Random RANDOM = new Random(System.currentTimeMillis());
static public double nextSkewedBoundedDouble(double min, double max, double skew, double bias) {
double range = max - min;
double mid = min + range / 2.0;
double unitGaussian = RANDOM.nextGaussian();
double biasFactor = Math.exp(bias);
double retval = mid+(range*(biasFactor/(biasFactor+Math.exp(-unitGaussian/skew))-0.5));
return retval;
}
参数执行以下操作:
- min - 可能的最小偏斜值
- max - 可能的最大偏斜值
- 偏斜 - 值围绕分布模式聚集的程度;更高的值意味着更紧密的聚类
- bias - 模式接近最小值、最大值或中点值的趋势;正值偏向最大值,负值偏向最小值
关于java - 将java随机数生成偏向某个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5853187/