【发布时间】:2011-11-15 15:58:46
【问题描述】:
有没有一种很好的算法可以将随机生成的数字分成三个桶,每个桶都有关于它们可能包含多少总数的限制。
例如,假设我随机生成的数字是 1,000,我需要将其拆分为桶 a、b 和 c。
These ranges are only an example. See my edit for possible ranges.
Bucket a may only be between 10% - 70% of the number (100 - 700)
Bucket b may only be between 10% - 50% of the number (100 - 500)
Bucket c may only be between 5% - 25% of the number (50 - 250)
a + b + c must equal the randomly generated number
您希望分配的数量是完全随机的,因此存储桶 a 达到其最大值的机会与存储桶 c 的机会相同,并且所有三个存储桶的概率都在其百分比平均值附近。
编辑:以下情况很可能总是正确的:a + b + c 100% 的高端。这些百分比仅表示可接受的 a、b 和 c 值。在 a 为 10% 而 b 和 c 为最大值(分别为 50% 和 25%)的情况下,必须重新分配数字,因为总数不等于 100%。这正是我试图通过找到一种方法一次性分配这些数字来避免的确切情况。
我想找到一种方法,一次性在它们的范围内随机选择这些数字。
【问题讨论】:
-
如果我们选择第一个bucket的10%,那么我们能得到的最大数是(10%+50%+25%)*x = 85%的初始数。所以 a+b+c 不能成立。
-
抱歉,不清楚。我已经更新了帖子。
标签: algorithm probability combinatorics