我需要一个随机数生成器,它使用可编程平均值来选择指定范围内的数字.
例如,我需要选择2到14之间的数字,我需要随机数的平均值为5.
我经常使用随机数发生器.通常我只需要一个统一的分布.
我甚至不知道该怎么称呼这种分布.
感谢您提供的任何帮助或见解.
如果您对该分布的形状感到满意,则可以使用二项分布.设置n = 12且p = 0.25.这将为您提供0到12之间的值,平均值为3.只需为每个结果添加2即可获得您想要的范围和平均值.
编辑:至于实现,您可能会找到一个支持非统一分发的所选语言库(我自己为Java编写了一个).
使用均匀的RNG可以相当容易地近似二项分布.只需执行n次试验并记录成功次数.因此,如果你有n = 10和p = 0.5,就像连续10次掷硬币并计算头数一样.对于p = 0.25,只生成0到3之间的均匀分布值,并且仅将零作为成功计数.
如果你想要一个更有效的实现,那么在Knuth的计算机编程艺术第2卷的练习中隐藏着一个聪明的算法.
我的第一个想法是:
这应该会给你你想要的范围内的数字。