我正在使用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/

10-09 12:31