numpyで乱数生成(一様分布、正規分布)
numpyの乱数生成関数であるrandomを用います。一様分布、標準正規分布(平均0、分散1である正規分布)および任意の平均・標準偏差を持つ正規分布を生成し、ヒストグラムで表示します。
使ったメソッド
- numpy.random : 乱数生成
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.7.0
一様分布
numpy.random.rand()メソッドにより0以上1未満の乱数が生成されます。
コード
%matplotlib inline import numpy as np import matplotlib.pyplot as plt # 10000個の乱数を生成 r = np.random.rand(10000) # 生成した乱数を階級100のヒストグラムにプロット plt.hist(r, bins=100) plt.show()
実行結果
0以上1未満で発生頻度に偏りのない乱数が生成されます。
標準正規分布
numpy.random.randn()メソッドにより、平均0分散1の標準正規分布を示す乱数が生成されます。
コード
%matplotlib inline import numpy as np import matplotlib.pyplot as plt # 10000個の乱数を生成 r = np.random.randn(10000) # 生成した乱数を階級100のヒストグラムにプロット plt.hist(r, bins=100) plt.show()
実行結果
numpy.random.normal(loc, scale, size)メソッドにより、locを平均、scaleを標準偏差、sizeを個数とした正規分布を示す乱数が生成されます。
コード
%matplotlib inline import numpy as np import matplotlib.pyplot as plt # 平均200標準偏差100の正規分布を示す10000個の乱数を生成 r = np.random.normal(200,100,10000) # 生成した乱数を階級100のヒストグラムにプロット plt.hist(r, bins=100) plt.show()
実行結果
二次元ndarray型の乱数を生成
numpy.random.rand()の引数を二次元とすることで二次元ndarrayの形で乱数を生成します。(さらに引数の個数を増やせば次元数も増えます)
コード
%matplotlib inline import numpy as np import matplotlib.pyplot as plt # 5x5の二次元ndarrayの乱数を生成 r = np.random.rand(5,5) print(r)
実行結果
[[0.32775851 0.98181808 0.97012833 0.32800525 0.38713339]
[0.65110946 0.90331112 0.68913906 0.9331449 0.27392729]
[0.78067762 0.31368241 0.21622819 0.6807168 0.71640867]
[0.00617543 0.02892421 0.61577624 0.51794378 0.29931118]
[0.70867395 0.89500931 0.42531238 0.49894493 0.11901469]]
以下のサイトを参考にさせていただきました
Scipy.org>>Random sampling (numpy.random)
note.nkmk.me>>NumPy, randomで様々な種類の乱数の配列を生成
Numpyによる乱数生成まとめ