2017-09-27 4 views

答えて

0

ランダムモジュールを使用して疑似乱数を生成することができます。以下は私の実例です。

import random 

def roll_dice(num_sides=6): 
    return random.randint(0,num_sides-1) + 1 

if __name__ == '__main__': 

    result = roll_dice(num_sides=2) 
    print(result) 
+1

私にはあまり偏っていないようですが、OPは特に 'pymc3'を使って解決策を求めました –

6

PyMC3に公正6面ダイスの1000本のロールをシミュレートする最も簡単な方法は、ちょうどnp.random.randint(1, 7, size=1000)を呼び出すために、

import pymc3 as pm 

with pm.Model(): 
    rolls = pm.DiscreteUniform('rolls', lower=1, upper=6) 
    trace = pm.sample(1000) 
trace['rolls'] # shows you the result of 1000 rolls 

これが遅くなることに注意してください、しかし等価です。 np.random.multinomial(1000, pval=probs)より、再び同等の、しかし遅い不公平ダイ

probs = np.array([0.1, 0.2, 0.3, 0.2, 0.1, 0.1]) 

with pm.Model(): 
    rolls = pm.Multinomial('rolls', n=1000, p=probs, shape=6) 
    trace = pm.sample(1) 

1000のロール用

あなたはPyMC3を使用することになるでsitutationは、あなたが観察した場合、たとえば、ある不公平ダイの50のロール、それは公正ダイであることをいくつか期待を持っている、との後方を評価したいですその期待。ここではその一例です:

observations = np.array([20, 6, 6, 6, 6, 6]) 
with pm.Model(): 
    probs = pm.Dirichlet('probs', a=np.ones(6)) # flat prior 
    rolls = pm.Multinomial('rolls', n=50, p=probs, observed=observations) 
    trace = pm.sample(1000) 
trace['probs'] # posterior samples of how fair the die are 

あなたは組み込みのtraceplotサンプルがどのように見えるか確認するために使用することができます。私たちは正しく側面の一つが起動することをうまく

posterior plot

注意を他のものよりも頻繁に!

+0

完璧!再度、感謝します。 –

関連する問題