2016-04-04 16 views
2

Bir kereliğine bernoulli dağılımlarının bir listesinden çizmek istiyorum. olasılıklar [0.1, 0.2, 0.3]. Bunu bir döngü ile yapabilirim ama daha iyi bir örnek var mı (scipy kullanımı da iyidir)?numpy, bir kerede birkaç bernoulli dağılımı çizin

ps = [0.1, 0.2, 0.3] 
[np.random.choice(2, p=[1 - p, p]) for p in ps] 

cevap

3

Sen Bernoulli denk olan bir binom gelen n=1 çizebilirsiniz. binom olasılık parametresi olarak bir dizi kabul olduğundan, kullanabilirsiniz:

np.random.binomial(1, p=ps) 

Bunu bazı unsurlara çok küçük/büyük olasılıkları vererek çalışıyor olmadığını test ve fonksiyonu birkaç kez çağırabilir.

Örneğin, let ps = [0.23, 0.48, 0.64, 0.98]

In [90]: np.sum([np.random.binomial(1,p=ps) for i in range(100000)], axis=0) 
Out[90]: array([23000, 48115, 64128, 97957])