具有特定长度和总和的随机列表

Random list with specific length and sum

我需要一个总和为 1 且具有一定长度的随机浮点数列表。

据我所知,我看到的方法生成了所有可能的场景,并且可能没有特定长度的列表。虽然让列表的剩余元素为零是一个选项,但这似乎不是一个好主意!

仅通过反复试验制作此列表既费钱又费时,因此该程序很费时。

尝试:

import numpy as np

n = 100
a = np.random.normal(size=n)
a /= a.sum()

之后:

>>> a.sum()
0.9999999999999998

注意:如果您的列表很短并且您担心初始 a.sum()0 的绝对例外情况,那么:

while True:
    a = np.random.normal(size=n)
    if not np.allclose(a.sum(), 0):
        a /= a.sum()
        break