具有特定长度和总和的随机列表
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
我需要一个总和为 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