con*_*kus 10 java random numbers
在Java中,如何生成随机数,但使该随机数偏向特定数字.例如,我想生成一个介于1和100之间的数字,但是我希望这个数字偏向于说75.但是我仍然希望有可能获得该范围内的其他数字,但我希望更多的数字更改接近75说,而不是只是在整个范围内得到随机数.谢谢
use*_*684 18
问题有点旧,但如果有人想在没有特殊情况处理的情况下这样做,你可以使用这样的函数:
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;
}
Run Code Online (Sandbox Code Playgroud)
参数执行以下操作:
试试http://download.oracle.com/javase/6/docs/api/java/util/Random.html#nextGaussian()
Math.max(1, Math.min(100, (int) 75 + Random.nextGaussian() * stddev)))
Run Code Online (Sandbox Code Playgroud)
选择一个类似于10的stddev并玩游戏直到你得到你想要的发行版.在1和100处会略微多于2或99.如果你想改变它下降的速率,你可以将高斯提升到一个幂.
| 归档时间: |
|
| 查看次数: |
3234 次 |
| 最近记录: |