指数分布に従う乱数を生成するnumpy.random.exponential()
関数の確認のため、同関数で発生させた乱数群のヒストグラムと、指数分布の確率密度関数のグラフを重ねて比較してみた。
コードは以下の通りで、ヒストグラムのrangeと関数計算のrangeを合わせている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
from math import exp import numpy.random as rnd import matplotlib.pyplot as plt # 指数乱数のデータ生成 lmd = 1 data = [] data_num = 1000 for n in range(0, data_num): data.append(rnd.exponential(lmd)) # ヒストグラムと確率密度の表示用パラメータ range_max = 5 range_num = 100 bins_num = 10 dt = range_max / bins_num # 関数値とヒストグラムを重ねて表示 x = [t*range_max/range_num for t in range(range_num)] plt.plot(x, [lmd*exp(-lmd*t)*dt*data_num for t in x]) plt.hist(data, range=(0, range_max), bins=bins_num) plt.show() |
実行結果は以下の通り。