algorithm - 在具有熵的范围内生成 20 个随机数

标签 algorithm random language-agnostic probability

我正在寻找我的问题的解决方案。假设我有一个数字 X,现在我想生成 20 个随机数,其总和等于 X,但我希望这些随机数中包含熵。因此,例如,如果 X = 50,则算法应生成

  • 3
  • 11
  • 0
  • 6
  • 19
  • 7

等给定数字的总和应等于 50。 有什么简单的方法可以做到这一点吗?

谢谢

最佳答案

简单的方法: 生成 1 和 X 之间的随机数:比如 R1; 从 X 中减去 R1,现在生成一个介于 1 和 (X - R1) 之间的随机数:比如 R2。重复该过程,直到所有 Ri 都加到 X 上:即 (X-Rn) 为零。注意:每个连续的数字 Ri 将小于第一个。如果您希望最终序列看起来更随机,只需排列生成的 Ri 数即可。 IE。如果您为 X=50 生成一个数组,如:22,11,9,5,2,1 - 将其置换以获得类似 9,22,2,11,1,5 的数组。您还可以限制任何随机数的大小。

关于algorithm - 在具有熵的范围内生成 20 个随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33511167/

相关文章:

c# - 在不使用临时内存的情况下从列表中删除重复项

python - 为什么包装random.Random的random方法好像对RNG有影响?

algorithm - 如何改进这个动态规划解决方案(算法优化)

algorithm - 生成彼此相邻的数字组

algorithm - 类似的听起来音乐

algorithm - Sets 和 hashmaps 没有固定的查找时间?

ruby-on-rails - 解决 ruby​​ 中的旅行商问题(50 多个位置)

python - 如何从排列列表中生成数字?

javascript - 具有最小/最大的随机数组

algorithm - 反转 sprintf/format 的方法