我正在使用Dirichlet分布生成总和为1的随机数数组。但是,实际上,我认为我需要这些数字才能求和为任意常数。
import numpy as np
d = np.random.dirichlet(np.ones(10), size=1)
我对修改此方法的好方法感到困惑,因此总和为10。大概是:
10*d
这不是一个好方法。
最佳答案
我认为N*d
是修改随机数的总和为N=10
的合法方法。 Dirichlet random numbers are samples from a Gamma generator that are normalized to sum to 1(另请参见Wikipedia)。由于您希望它们的总和为N
而不是1,因此将每个Dirichlet随机数乘以N
是完全合法的。
关于python - 生成求和为常数的随机数数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19299911/