【发布时间】:2014-04-16 00:14:37
【问题描述】:
我想生成 150 个随机数,其值为正整数 (1,2,3,4,5.....),这样所有随机数的总和为 270 并且
Prob[1] = 0.405
Prob[2] = 0.345
Prob[3] = 0.125
Prob[4] = 0.092
Prob[>=5] = 0.033
基本上,所有随机数的总和是固定的,概率是固定的,随机数应该取大于0的值。
有谁知道如何用 python/MATLAB/C 或任何其他编程语言生成它。
【问题讨论】:
-
您有矛盾的要求。如果 150 个数字有一个固定的和,那么其中至少有一个不是独立随机的。您可以根据您的分布绘制 149,并根据当前和目标总和计算最后一个。行得通吗?
-
是的,你是对的。那样就好了……至少其中一个不会是随机的。
-
这些概率有多灵活?例如 0.405*150 = 60.75 那么结果中必须有 61 个吗?更糟糕的是 0.405*150*1 + 0.345*150*2 + 0.125*150*3 + 0.092*150*4 = 275.7 这大于 270 的最大总和...
-
是的,我知道,这就是约束使问题变得困难的原因。它是一种优化问题,其中一个约束影响另一个约束。我和你的想法一样,但我认为,如果要满足 sum,总会有一些错误。