今回はシミュレーションやテストデータを作成する際によく使う乱数についてです。
randomモジュールとrand
NumPyのrandomモジュールには様々な乱数を生成するメソッドが用意されています。まずは基本的なrandメソッドについて学習しましょう。
rand
randメソッドを使用すると、最も基本的な乱数である[0, 1)区間(0.0以上、1.0未満)の一様乱数を生成することができます。
引数で生成する要素数を指定します。
10000個の乱数を生成し、階級数が20のヒストグラムで可視化するサンプルを見てみましょう。
import numpy as np import matplotlib.pyplot as plt rand_array = np.random.rand(10000) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.hist(rand_array, bins=20, ec="b") plt.show()
多次元の乱数
第二引数以降を指定すると、その次元の乱数行列が返されます。2x20の行列を生成してプロットしてみましょう。
import numpy as np import matplotlib.pyplot as plt rand_x, rand_y = np.random.rand(2, 20) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.scatter(rand_x, rand_y) plt.show()
さまざまな分布の乱数
さまざまな分布の乱数
randomモジュールには様々な分布の乱数を生成するメソッドが用意されています。代表的なものを紹介します。
| メソッド | 分布 |
|---|---|
| beta | ベータ分布 |
| binomial | 二項分布 |
| chisquare | カイ二乗分布 |
| dirichlet | ディリクレ分布 |
| exponential | 指数分布 |
| f | F分布 |
| gamma | ガンマ分布 |
| geometric | 幾何分布 |
| gumbel | ガンベル分布 |
| hypergeometric | 超幾何分布 |
| logistic | ロジスティック分布 |
| lognormal | 対数正規分布 |
| logseries | 対数級数分布 |
| multinomial | 多項分布 |
| multivariate_normal | 多変量正規分布 |
| negative_binomial | 負の二項分布 |
| noncentral_chisquare | 非中心カイ二乗分布 |
| noncentral_f | 非中心F分布から |
| normal | 正規分布 |
| poisson | ポアソン分布 |
| standard_cauchy | 標準コーシー分布 |
| standard_exponential | 標準指数分布 |
| standard_gamma | 標準ガンマ分布 |
| standard_normal | 標準正規分布 |
| standard_t | 標準t分布 |
| uniform | 一様分布 |
| weibull | ワイブル分布 |
その他の分布の乱数や、引数については以下を参照してください。
Random sampling
サンプル
例として標準正規分布をヒストグラムで可視化してみましょう。
import numpy as np import matplotlib.pyplot as plt rand_array = np.random.standard_normal(10000) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.hist(rand_array, bins=50, ec="b") plt.show()
randと異なり、釣鐘状の分布となっていることが確認できます。



