如何有效地随机化所有相同浮点数的相对较小的数组,保留总和?

Qui*_*fox 3 javascript math

如何有效地随机化所有相同浮点数的相对较小的数组,保留总和?

例如:

我有一组相等的浮点数:

[ 0.1, 0.1, 0.1, 0.1, 0.1 ] // sum === 0.5
Run Code Online (Sandbox Code Playgroud)

我想像这样随意化:

[ 0.1, 0.2, 0.0, 0.15, 0.05 ] // sum === 0.5
Run Code Online (Sandbox Code Playgroud)

初始数组总是具有相同的值,但它可以在各种范围内:

[ 3.56, 3.56, 3.56, 3.56, 3.56 ]
Run Code Online (Sandbox Code Playgroud)

我不知道这些初始阵列的最终实际大小,但我猜它们的长度在50到100之间.

(仅供参考:这些是音符持续时间,如果算法是音乐会的奖励积分)

kke*_*kke 6

1)计算0和1之间的n个随机浮点数

2)计算这n个数的总和.

3)你必须将总和除以自己,然后乘以你想得的总和(在下面的结果中).因此,如果将1)中生成的n个数字中的每一个除以2)中计算的总和,并将结果乘以resultum,那么您将获得结果中所需的随机数.