[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])