将数字除以随机不等的部分

Tom*_*Tom 10 php algorithm math

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

Hig*_*ark 24

从您最喜欢的随机数生成器生成12个随机数,然后调用它们r1..r12.

将它们全部添加,调用总和sum.

你的第一个随机分数4是(r1/sum)*4.其余应该是显而易见的.

  • @rici - 我可以做到这一点,但这需要一个很长的答案,而不是适合评论的东西.无论如何,我已经在EXTREME细节中完成了这项工作.真的,这个问题可以说是一个副本.http://stackoverflow.com/questions/8064629/random-numbers-that-add-to-100-matlab/8068956#8068956 (2认同)
  • @woodchips,谢谢,这个链接很有用.从理论上讲,这个问题与链接问题不同,因为这个问题是在一个连续的领域,而相关的问题是离散的.当然,在实践中,它们都是离散的,但答案将取决于连续解是否足够好近似. (2认同)

Тол*_*оля 8

生成任何大于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