2012-11-19 49 views
2

我想制作一个算法,它会给我一些随机的数字,我不知道他们会是什么,但同时,更接近0的数字必须更可能发生为而那些接近1的人则不太可能。我想玩弄线性指数分布和指数分布,所以请给出实现两者的至少提示。我怎样才能扭曲一组随机数的分布?

我想过和想过如何解决这个问题,但我仍然没有线索,所以任何指针,将不胜感激。

注意:我不想讨论,也没有理解“真实”与“伪”随机性的复杂性......这与安全或密码学无关,对于它而言,我会简单地使用Javascript的Math.random()作为种子,所以我们都清楚自己在问什么。

+0

可以使用指数函数,但你将不得不使用概率的密度,也可以建立一个范围,例如,P(0 <= X <= 0.1)= 0.5 ,P(0.1

+0

对不起,您能否简单介绍一下您使用的符号?我制作了这个简单的图形脚本,以便我可以通过插图更好地理解这些东西,但它并不真正起作用。也许你也可以看看这个呢? http://jsfiddle.net/eg3bU/2/ – wwaawaw

+0

@AlbertoBonsanto得到它的工作... :)检查出来! http://jsfiddle.net/RTbrL/ – wwaawaw

回答

1
var random = Math.pow(Math.random(), 2); 
+0

你能提供一点这个更详细的说明吗?由于随机数字的乐观,这很难让我的脑袋围绕这将会产生的影响,但它似乎很有趣。 – wwaawaw

+0

它给你0和1之间的随机数。数字更可能在0附近大于1.如果增加数字2,随机数字更可能在0附近。 –

+0

我怎样才能得到线性递减分布? 'var rand = 2 * Math.random()'? – wwaawaw

0

看看泊松分布,也许你可以用它自己的目的,本质上是泊松分布是不确定的,但它的发生有一定的频率:维基百科有这个一个很好的介绍性的信息: http://en.wikipedia.org/wiki/Poisson_distribution

算法:

algorithm poisson random number (Knuth): 
init: 
    Let L ← e−λ, k ← 0 and p ← 1. 
do: 
    k ← k + 1. 
    Generate uniform random number u in [0,1] and let p ← p × u. 
while p > L. 
return k − 1. 
相关问题