生成具有非均匀分布的随机数

时间:2014-01-20 22:26:25

标签: javascript probability

我有一个公式,在给定范围[x,y]中生成一个随机整数。

rand = Math.floor(x + Math.random()*(y-x+1));

我希望生成的整数有更高的机会接近中音。 Here is an interesting approach

我正在努力使这个解决方案适应我的问题(数字偏向中档,而不是四肢),但我正在努力解决这个问题。

beta = Math.sin(Math.random()*Math.PI)^2;
rand = Math.floor(x + beta*(y-x+1));

我不明白beta是如何运作的。根据{{​​3}},产生的数字不会更接近0.5的概率吗? beta始终返回相同的数字。我没有正确实施Math.random()吗?我发誓javascript现在正在搞乱我。

1 个答案:

答案 0 :(得分:1)

您可能需要

beta = 4 * (rand - 0.5)^3 + 0.5

功能或具有类似形状的东西

Graph

分发结果:http://jsfiddle.net/4hBqz/