繁体   English   中英

使用Zipf分布曲线的加权随机

[英]Weighted random using Zipf's distribution curve

我正在寻找构造一个返回随机元素但基于Zipf分布曲线的JavaScript函数:
https://zh.wikipedia.org/wiki/Zipf%27s_law

我看了一下:
http://codetheory.in/weighted-biased-random-number-generation-with-javascript-based-on-probability/

它有点接近,但是我想使用一种基于Zipf分布曲线的数学公式更简单的方法。

考虑:

['kiwi', 'banana', 'orange', 'apple', 'pear', 'mango', .... etc]

因此,基本上,如果我们从上面的数组中选择了10,000个随机水果,我们将得到以下分布:

在此处输入图片说明

第一个点是奇异果,第二个点是橙色,依此类推。

似乎您想用s = 1实现最简单的Zipf定律。 这意味着您可以简单地将谐波序列的元素取为数组长度的n并将数组中第一个元素的权重设置为1 ,将其次为1/2 ,然后将其次为1/3 ,依此类推,直到达到1/n

然后,您可以只使用codetheory中的代码,然后将您的element-weight-array(作为键值对象,就像他们在其中那样做) random_check而不是在random_checkrandom_check它们的数组, random_check可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM