【发布时间】:2015-08-23 13:35:33
【问题描述】:
我正在尝试生成具有对数分布的随机整数。我使用以下公式:
idx = Math.floor(Math.log((Math.random() * Math.pow(2.0, max)) + 1.0) / Math.log(2.0));
这很有效,并且在 1000 次迭代中产生这样的序列(每个数字代表该索引生成了多少次):
[525, 261, 119, 45, 29, 13, 5, 1, 1, 1]
我现在正在尝试调整此分布的斜率,使其不会下降得那么快并产生如下内容:
[150, 120, 100, 80, 60, ...]
盲目地玩系数并没有给我想要的东西。任何想法如何实现它?
【问题讨论】:
-
将公式中的每个
2.0设置为更接近1.0,例如1.3 -
@zmii 如果
max=10效果很好,但如果max=2它会产生更陡峭的斜率:[830, 170]与[744, 256]的2.0相比
标签: javascript algorithm math statistics distribution