3 回答

TA貢獻1798條經(jīng)驗 獲得超7個贊
使用它的問題dirichlet在于它是實數(shù)的分布。它將產(chǎn)生一個范圍內(nèi)的數(shù)字向量(0,1),總和為 1,但截斷或舍入它們可能會消除對特定總和的保證。在這篇文章之后,我們可以從分布中獲得所需的效果multinomial(使用np.random.multinomial),如下所示:
from numpy.random import multinomial
np.random.multinomial(m, np.ones(n)/n)
這將生成和n之間的整數(shù),其和為,繪制給定位置的概率相等??梢暬@一點的最簡單方法是將結(jié)果視為描述從一組固定對象(例如,從 1 到 6 的整數(shù)繪制的骰子)中的一組繪圖,其中最終數(shù)組是相應(yīng)對象的次數(shù)畫??倲?shù)將始終與給定的總平局(擲骰)數(shù)相加。0mm

TA貢獻1854條經(jīng)驗 獲得超8個贊
請注意,Dirichlet 分布可用于參數(shù)化多項式,從而控制 bin 的平滑度或“均勻性”,例如:
import numpy as np
m = 50
n = 5
s = 0.1
np.random.multinomial(m, np.random.dirichlet(np.ones(n) * s))
主要參數(shù)化為@Bonfire,但較大的值s(例如 try s=100)導致 bin 以 mean= 接近 Poisson,m/n較小的值導致更大的方差

TA貢獻1852條經(jīng)驗 獲得超7個贊
這是一個示例解決方案:
import numpy as np
M = 50 # The fixed sum
N = 5 # The amount of numbers
array = np.random.multinomial(M, np.ones(N) / N)[0]
print(array)
添加回答
舉報