【问题标题】:Weighted random using Zipf's distribution curve使用 Zipf 分布曲线加权随机
【发布时间】:2016-02-03 02:54:14
【问题描述】:

我正在寻找基于 Zipf 分布曲线返回随机元素的 JavaScript 函数:
https://en.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 个水果,我们将得到以下分布:

第一个点是猕猴桃,第二个点是橙色,依此类推。

【问题讨论】:

    标签: javascript distribution


    【解决方案1】:

    您似乎想实现 s=1 的最简单的 Zipf 定律。这意味着您可以简单地将具有n 的谐波系列的元素设置为数组的长度,并将数组的第一个元素的权重设置为1,在1/2 旁边,在1/3 旁边依此类推,直到达到1/n

    然后,您可以使用 codetheory 中的代码并插入您的元素权重数组(作为键值对象,就像他们在那里做的那样)而不是他们的数组 inrandom_check,然后就完成了。

    【讨论】:

    • 没错。它就像一个魅力。感谢您的回复。
    猜你喜欢
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2020-05-05
    • 1970-01-01
    • 2016-11-08
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多