Generator.standard_exponentialは、NumPyのrandomモジュールのジェネレータメソッドで、標準指数分布から乱数配列を精製します。
標準指数分布は、scale(尺度母数)が1の指数分布です。
指数分布は、幾何分布の連続確率であり、さまざまな状況に使われます。たとえば、多数の暴風雨から雨粒の大きさを推定したり、多数のデータからページリクエストにかかる時間を推定したりなどです。言い方を変えると、あるランダムな事象が連続して起きる時間間隔を表しています
ここでは、この指数分布の乱数配列を生成するGenerator.standard_exponentialについて解説します。
なお、任意のscaleを指定できるジェネレータメソッドに、Generator.exponentialがあります。これについては、以下のページで解説しています。
1. 書式
書き方:
Generator.standard_exponential(size=None, dtype=np.float64, method='zig', out=None)
パラメーター:
size: int or tuple of ints, optional 出力する配列のshape。例えば、(m, n, k)と渡せば、shape(m, n, k)の乱数配列を取得。デフォルトのNoneでは1つの乱数を返す。 |
dytpe: dtype, optional 生成する配列の要素の型。float64とfloat32のみ指定可能。デフォルト値はnp.float64。配列の要素の型については、『NumPyのdtype属性の一覧と参照・指定・変更方法』を参照すること。 |
method: str, optional ‘inv’か’zig’を指定可能。’inv’は、デフォルトのインバースCDFメソッドを使用。’zig’は、それより遥かに速いジグラットメソッドを使用。デフォルト値は’zig’。’inv’を使うことはほぼない。 |
out: ndarray, optional ここで指定した配列に、ジェネレータメソッドで生成する配列を代入する。両方のshapeが合致している必要がある。 |
戻り値:
out: ndarray or scalar 標準指数分布からの乱数 |
2. サンプルコード
まずは、random.default_rng コンストラクタでジェネレータオブジェクトを作成します。『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』に目を通しておいてください。
import numpy as np
rng = np.random.default_rng()
rng
こうして作成したジェネレータオブジェクト rng に対して、Generator.standard_exponentialを呼び出します。その際、引数にはsizeを渡します。
rng.standard_exponential(5)
標準指数分布の形状をヒストグラムで確認しておきましょう。
import matplotlib.pyplot as plt
s = rng.standard_exponential(10000)
count, bins, ignored = plt.hist(s, 30, density=True)
plt.show()
3. まとめ
以上のように、Generator.standard_exponentialは標準指数分布から乱数配列を生成するジェネレータメソッドです。これとは別に任意のscaleの指数分布を設定できるものに、『Generator.exponential – 指数分布から乱数配列を生成』があります。
これまで使われていたnp.random.standard_exponential関数は継続して使用可能ですが、Generator.standard_exponentialtメソッドを使った方が遥かに高速で科学技術計算に適しています。
コメント