Pythonで確率分布に従う乱数を生成するにはscipy.statsが便利です
from scipy.stats import gamma from scipy.stats import beta from scipy.stats import bernoulli from scipy import stats import numpy as np #乱数のseedを設定 np.random.seed(1234) #ベルヌーイ分布(歪んだコインのコイントス) print(bernoulli.rvs(0.1, size=10)) #カテゴリカル分布(歪んだサイコロ) xk = np.arange(7) pk = (0.1,0.2,0.3,0.4,0.5,0.6,0.7) #仮に1を超えた場合はそれ以降の値は出現しない(この場合は0~3までが生成される) custm = stats.rv_discrete(name='custm', values=(xk, pk)) print(custm.rvs(size=10)) #ガンマ分布 print(gamma(a=1.0, scale=1.0).rvs(10)) #ベータ分布 print(beta(a=1.0, b=1.0).rvs(10))
参考
https://docs.scipy.org/doc/scipy/reference/stats.html
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_discrete.html#scipy.stats.rv_discrete