SciPy で正規乱数を発生させる

SciPyを使って正規乱数N(mu,sigma)を発生させるには、SciPyのstatsを利用する。

#!/usr/bin/python
# -*- coding:utf-8 -*-

>>>import numpy as np
>>>from scipy import stats

#-- 正規分布N(0,1)
>>>mu = 0
>>>sigma = 1

>>>print stats.norm.rvs(0,1)
 
[[ 1.47385774 ]]

というように、リストに保存されて返される。

乱数をたくさん発生させたいときには、size指定をする。

#!/usr/bin/python
# -*- coding:utf-8 -*-

>>>import numpy as np
>>>from scipy import stats

#-- 正規分布N(0,1)
>>>mu = 0
>>>sigma = 1

>>>print stats.norm.rvs(0,1,size=2)
 
[[ 1.47385774 -0.59106471]]

制御理論をやっていると、状態方程式や観測方程式の誤差項w,vを行列として生成したいときがある。その場合は、numpyのmatrixと組み合わせて使う。

#!/usr/bin/python
# -*- coding:utf-8 -*-

>>>import numpy as np
>>>from scipy import stats

#-- 正規分布N(0,1)
>>>mu = 0
>>>sigma = 1

>>>tv = np.matrix(stats.norm.rvs(0,1,size = 2))
>>>v = tv.transpose() 
>>>print v
[[-0.82423001]
 [ 2.35824045]]

一度行ベクトルを作っておいてから列ベクトルに変形すると楽かも。

参考サイト↓
http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html