Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

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未満で発生頻度に偏りのない乱数が生成されます。
f:id:T_A_T:20190609160118p:plain


標準正規分布


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()
実行結果

f:id:T_A_T:20190609160500p:plain


任意の平均・標準偏差を持つ正規分布


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()
実行結果

f:id:T_A_T:20190609160851p:plain


二次元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による乱数生成まとめ

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村