2016-04-04 3 views
2

私は一度にbernoulli分布のリストから描画したいとします。確率は[0.1, 0.2, 0.3]です。私はforループでこれを行うことができますが、そこには良いnumpyの方法です(scipyの使用も良いです)?numpyは一度にいくつかのbernoulli分布を描きます。

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

答えて

3

n=1は、ベルヌーイに相当する二項式から描くことができます。二項は、確率パラメータとして配列を受け取り、あなたが使用することができますので:

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

あなたはそれがいくつかの要素に非常に小さな/大きな確率を与えることによって働いているかどうかをテストし、機能を複数回呼び出すことができます。

例えば、聞かせて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]) 
関連する問題