11

所以我正在尝试制作一个脚本,将值 4 随机拆分为 12 个不同的变量。我想不出一个很好的方法来正确地做到这一点。我考虑过随机化数字,使它们接近 0.33(4 的 1/12),但这通常会导致最后几个数字的优先级不足。任何人之前都尝试过这样的事情,或者对如何使其尽可能随机和均匀不均匀有任何好主意?

4

3 回答 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 回答