我正在使用 Dirichlet 分布来生成一个随机数数组,总和为 1。但是,我实际上认为我需要这些数字总和为任意常数。
import numpy as np
d = np.random.dirichlet(np.ones(10), size=1)
我对修改它的好方法感到困惑,这样总和就是 10。大概:
10*d
这不是一个好方法。
我正在使用 Dirichlet 分布来生成一个随机数数组,总和为 1。但是,我实际上认为我需要这些数字总和为任意常数。
import numpy as np
d = np.random.dirichlet(np.ones(10), size=1)
我对修改它的好方法感到困惑,这样总和就是 10。大概:
10*d
这不是一个好方法。
我认为N*d
将随机数修改为总和为N=10
. Dirichlet 随机数是来自 Gamma 生成器的样本,它们被归一化为总和为 1(另见Wikipedia)。由于您希望它们总和N
而不是 1,因此将每个 Dirichlet 随机数乘以 是完全合法的N
。