所以我正在尝试制作一个脚本,将值 4 随机拆分为 12 个不同的变量。我想不出一个很好的方法来正确地做到这一点。我考虑过随机化数字,使它们接近 0.33(4 的 1/12),但这通常会导致最后几个数字的优先级不足。任何人之前都尝试过这样的事情,或者对如何使其尽可能随机和均匀不均匀有任何好主意?
问问题
19483 次
3 回答
31
从您最喜欢的随机数生成器生成 12 个随机数,调用它们r1..r12
。
将它们全部加起来,调用 sum sum
。
您的第一个随机分数4
是(r1/sum)*4
. 其余的应该是显而易见的。
于 2013-02-19T13:57:03.850 回答
9
生成任何大于 1 的随机数,然后重新调整为所需的总和。
例子:
- 所需金额:4
- 随机数:1 2 3 4 5 6 7 8 9 10 11 12
- 总和 = 78
- 重新调整的数字:
1 重新缩放为 (1*4) / 78
2 重新缩放为 (2*4) / 78
...
12 重新缩放为 (12*4) / 78
于 2013-02-19T13:58:21.553 回答
2
以下算法提供均匀分布的分区,假设可以在连续范围内(或至少在具有足够多可能值的离散范围内生成均匀分布的随机数,使得重复的几率可以忽略不计)。
要产生一个值的t
划分k
:
在范围内生成
k-1
均匀分布的值[0, t]
。对它们进行排序,并
0
在开头和t
结尾添加。使用相邻的差异作为分区。
于 2013-02-19T19:32:50.233 回答