【发布时间】:2016-03-24 09:17:41
【问题描述】:
在 [M..N] 范围内生成一个随机数很容易。但是,我想在该范围内生成一系列随机数,平均值为 X (M
例如,假设如下: M = 10000 N = 1000000 X = 20000 我想生成(大量)随机数,以便覆盖整个范围 [M..N],但在这种情况下,接近 N 的数字应该变得非常罕见。更接近 M 的数字应该更常见,以确保均值收敛到 X。
预期的目标语言是 PHP,但这本身不是语言问题。
【问题讨论】:
-
你知道分布应该是什么样子吗?您可以通过使用两种均匀分布(也称为标准随机函数)轻松实现这一点,一种用于 [M..X],另一种用于 [X..N] 加权,因此平均值为 X。
-
有趣。因此,[M..X] 中的均匀分布将具有 (M+X)/2 的平均值,而 [X..N] 中的均匀分布将具有 (X+N)/2 的平均值,对吗?然后对这两个方法进行加权,使它们的 EV 为 X……你是这个意思吗?
-
是的,您只需通过掷硬币来决定使用哪个分布。这满足了您的要求,但可能无法给出您想要的“形状”。
-
如果我想,我怎么能影响形状?无论如何,你的建议是我已经可以使用的!
-
您将查看您的统计数据并查看this page 以了解有限区间的分布。
标签: php random numbers probability distribution