[NumPy_02] random関数 - 様々な乱数を生成する。

Posted on 2019/03/08 in programming , Updated on: 2019/03/30

はじめに

NumPy には、大量の乱数生成を実行する関数が多く用意されている。Python 標準の random モジュールより高速に動くため、データサイエンス向けライブラリーの練習等にも使える。

.rand()

引数として与えられた形状配列を作成して、0~1の一様分布からランダムに数値をサンプリングする。

np.random.rand()
# 0.04973639575576805

# 1次元 3要素
np.random.rand(3)
# array([0.07713379, 0.17275998, 0.57856427])

# 2次元 4x4要素
np.random.rand(4, 4)
# array([[0.1793304 , 0.46509954, 0.29201518, 0.44933199],
#        [0.72024083, 0.69927245, 0.5703159 , 0.15318234],
#        [0.25567981, 0.99377745, 0.39728105, 0.25397251],
#        [0.77973278, 0.79301535, 0.12647443, 0.9207554 ]])

.randn()

一様分布からサンプリングする.rand()とは異なり、.randn()は平均0で標準偏差1の"正規分布”からサンプリングする。rand の後についている"n"は、Normal Distribution(正規分布)の頭文字。

np.random.randn(2)
# array([-0.77946845, -0.61496784])

np.random.randn(3, 3)
# array([[ 0.6605953 , -1.59772636,  0.48223159],
#        [ 0.97797005,  1.52575177,  0.50617422],
#        [-1.00068423, -0.40814908, -2.22607208]])

.randnormal()

任意の平均で任意の標準偏差の"正規分布"からサンプリングする。

np.random.normal(平均、標準偏差、出力数)  
※ 出力数はタプルで渡す。
# 平均5, 標準偏差10, 3x4のアレイを出力
np.random.normal(5, 10, (3, 4))
# array([[-5.68439114, 13.79813365, -0.95258647, 11.90837714],
#        [ 6.84731801, -8.08315633,  6.41463272, -4.3162467 ],
#        [11.4068069 ,  2.06190273, 12.29363492,  1.68464285]])

.randint()

ランダムに整数を取り出す。rand の後についている"int"は、Integer(整数)の略。 注意点として、指定するstart値は含まれるが、end値は含まれない。
例) np.random.randint(2, 8) => 2~7の中からサンプリング。

# 1 ~ 99 の中からランダムに一つの整数を返す
np.random.randint(1, 100)
# 25

# 1 ~ 99 の中からランダムに5つの整数を1次元アレイとして返す
np.random.randint(1, 100, 5)
# array([73, 14, 66, 88,  2])