Generator.vonmisesは、フォン・ミーゼス分布から乱数配列を生成するジェネレータメソッドです。
フォン・ミーゼス分布(円周正規分布としても知られる)は、円周上の連続確率分布です。正規分布が円周状になったものとして考えられます。
このページではフォン・ミーゼス分布から乱数配列を生成するGenerator.vonmisesについて解説します。
1. 書式
書き方:
Generator.vonmises(mu, kappa, size=None)
パラメーター:
mu: float or array_like of floats 最頻値 |
kappa: float or array_like of floats 分布のばらつき(>=0) |
size: int or tuple of ints, optional 出力する配列のshape。(m, n, k)を渡すと、shape(m, n, k)の乱数配列を生成する。デフォルト値Noneで、mu, kappaがスカラーの場合は1つの乱数の値を返す。それ以外の場合はnp.broadcast(mu, kappa).sizeの乱数配列を返す。 |
戻り値:
out: ndarray or scalar パラメータを設定したフォン・ミーゼス分布から乱数配列を生成。 |
Notes
フォン・ミーゼス分布の確率密度関数は次の通りです。
2. サンプルコード
それでは、サンプルコードを見ていきましょう。
まずは、random.default_rng コンストラクタでジェネレータオブジェクトを作成します。『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』に目を通しておいてください。
import numpy as np
rng = np.random.default_rng()
rng
こうして作成したジェネレータオブジェクト rng に対して、Generator.vonmisesを呼び出すことによって、フォン・ミーゼス分布から乱数配列を取得することができます。
第一引数に最頻値μ、第二引数にばらつきκ、第三引数に配列のsizeを渡します。
rng.vonmises(0.0, 4.0, 5)
確率密度関数と共に、取得した乱数配列のヒストグラムを描いてみます。
mu, kappa = 0.0, 4.0 # mean and dispersion
s = rng.vonmises(mu, kappa, 10000)
import matplotlib.pyplot as plt
from scipy.special import i0
plt.hist(s, 50, density=True)
x = np.linspace(-np.pi, np.pi, num=51)
y = np.exp(kappa*np.cos(x-mu))/(2*np.pi*i0(kappa))
plt.plot(x, y, linewidth=2, color='r')
plt.show()
3. まとめ
以上、Generator.vonmisesはフォン・ミーゼス分布から乱数配列を生成するジェネレータメソッドです。
以前は、numpy.random.vonmises関数が使われていましたが、ジェネレータメソッドを使うようにしましょう。こちらの方が、処理が高速で、大量のデータを扱う科学技術計算に適しているからです。
コメント