Generator.poisson – ポアソン分布から乱数配列を作成する方法

Generator.poissonは、ポアソン分布から乱数配列を生成するジェネレータメソッドです。

ポアソン分布とは、起こる確率が一定のあるランダムな事象が、一定期間内に何回発生するかを示す離散確率分布です。似たような物に指数分布があります。ポアソン分布は、ある事象が起きる回数の確率を示すのに対し、指数分布は、ある事象が起きる期間の確率を示します。

なお指数分布については以下で解説しています。

このページではポアソン分布から乱数配列を生成するGenerator.poissonについて解説します。

目次

1. 書式

Generator.poisson

書き方:

Generator.poisson(lam=1.0, size=None)

パラメーター:

lam: float or array_like of floats
ある事象が一定の期間内に発生する回数の期待値(>=0)。λ。シーケンスで渡す場合は、size引数で指定したものにブロードキャスト可能でなければならない。
size: int or tuple of ints, optional
出力する配列のshape。(m, n, k)を渡すと、shape(m, n, k)の乱数配列を生成する。デフォルト値Noneで、lamがスカラーの場合は1つの乱数の値を返す。それ以外の場合は、np.array(lam).sizeの乱数配列を返す。

戻り値: 

out: ndarray or scalar
パラメータを設定したポアソン分布から乱数配列を生成。

2. サンプルコード

それでは、サンプルコードを見ていきましょう。

まずは、random.default_rng コンストラクタでジェネレータオブジェクトを作成します。『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』に目を通しておいてください。

In [1]:
import numpy as np
rng = np.random.default_rng()
rng
Out[1]:
Generator(PCG64) at 0x7FC7DB25EE58

こうして作成したジェネレータオブジェクト rng に対して、Generator.poissonを呼び出すことによって、ポアソン分布から乱数配列を取得することができます。

以下のコードでは、ある一定期間内に5回発生する事象が、何回発生したのかの乱数配列を生成しています。例えば、いつも1時間当たりにメールが5通届いているとして、以下の乱数配列は、別の1時間でメールが何通届いたかを示しています。

In [2]:
rng.poisson(5, 5)
Out[2]:
array([3, 6, 3, 0, 5])

それでは、この場合、1時間の内でメールが1通も届かない確率はどれぐらいあるでしょうか。以下のコードで計算しています。

In [3]:
s = rng.poisson(5, 10000)
np.count_nonzero(s == 0) / 10000 * 100
Out[3]:
0.69

結果、0.69%しかないことがわかります。

以下では、このポアソン分布のヒストグラムを描画しています。

In [4]:
import matplotlib.pyplot as plt
s = rng.poisson(5, 10000)
count, bins, ignored = plt.hist(s, 14, density=True)
plt.show()

3.まとめ

以上のように、Generator.poissonは、ポアソン分布から乱数配列を生成するジェネレータメソッドです。

以前は、numpy.random.poisson関数が使われていましたが、ジェネレータメソッドを使うようにしましょう。こちらの方が、処理が高速で、大量のデータを扱う科学技術計算に適しているからです。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる