关于随机值

use*_*221 3 java random algorithm

可能重复:
获得总和为M的N个随机数

嗨,我有一个问题:

如何得到所有值的总和的随机值1.喜欢{0.5,0.5}{0.25,0.25,0.5}更多.这些值的数量每次都不同,一次可以23上面的例子一样!谢谢.

Asa*_*aph 12

我将为您概述基本算法:

  • 决定您将生成多少随机数,这些随机数将被求和.

  • 生成那么多随机数.

  • 决定他们应该加起来什么.

  • 将上一步骤中的数字除以随机数的总和.

  • 将每个随机数除以上一步中的数字.

基本上你要做的就是生成一堆无界的随机数,然后将它们全部调整,以便它们加起来一些特定的数字.

顺便说一句:在极不可能的情况下,你生成的所有随机数都是零,你会用这个算法得到除零误差.因此,您应该在实现中陷阱,并在循环中重试随机数生成,直到获得非零的随机数总和.

  • 很好的解决方案. (2认同)
  • +1 - 虽然应该注意fp舍入误差可能意味着数字并不完全相加到1.0. (2认同)