java - 将java随机数生成偏向某个数字

标签 java random numbers

在 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/

相关文章:

PHP 数字的最小精度

charts - 如何让 JavaFX 图表 NumberAxis 只显示整数值,而不是 double 值

java - 在 Java 中,当按下某个键(例如字母)时,如何防止该键输出分配给 jTextPane 的字母?

java - 如何在 Java 中为太大和太小的数字获得非常高的精度?

python - 最大成对产品快速解决方案

javascript - 选择随机数组元素并放入另一个

java - 带数字键盘的按键监听器?

Java泛型转换

java - Arduino 循环中断

algorithm - 随机队列实现 - 随机性的想法