【发布时间】:2018-06-17 20:45:22
【问题描述】:
是否有任何众所周知的算法可以生成具有相同常数和的加权随机数数组?
这个问题可以换一种说法:比如说,我的总价值是 20。应该分成 3 个部分,每个部分的权重分别为 2、4、3。 所以,我需要 3 个随机数,总和为 20,但分布将遵循权重。
我试过了:
Range=20
W=[2,4,3]
Prob=[i/float(sum(W)) for i in W]
Weighted_array=np.random.multinomial(Range, Prob)
还有更好的选择吗?
【问题讨论】:
-
我在 python 中尝试过 random.multinomial()。
-
请提供更多细节。你的意思是什么类型的数字——只有正整数,还是允许浮点数?您所说的“分配将遵循重量”是什么意思?您希望结果采用哪种概率分布 - 某种均匀分布在所有可能性上,您不在乎,还是其他?
-
抱歉不清楚。我需要生成整数。对于该示例, weighted_array 可以是:[4,10,6],[3,12,5] 等。“分布将遵循权重”意味着生成的数组元素将根据 W 个数组元素进行加权。希望清楚。
-
但是你有 20 个潜在的数字被采样并且只有三个权重。假设我将您的代码用作黑匣子,采样 100 万个样本,然后将它们放在从 1(或零?有点不清楚)到 20 的直方图中。这三个权重将如何表现出来?
标签: python random statistics