【Python No.1】乱数と配列の作り方

シェアする

先ずは乱数の扱い方から.

AIとは統計のようなプログラムを書かないと,乱数はあまり使用する機会がないかもしれませんが,工学ではこのような乱数配列を作成する場面はとても多いです(少なくとも私は)

それで,乱数と言っても,利用する機会が多いのは一様乱数と正規乱数だと思います.先ずはこれらの乱数値を得る方法です.まず大前提で,numpyをインポートしておきます.

import numpy as np

この後で,命令と結果を以下の表に示します(こういうふうにまとめた方が一発でわかる)

実行内容 命令 結果
0以上1未満の一様乱数(実数) np.random.rand()
>>> np.random.rand()
0.32924518111448897
0以上1未満の一様乱数のd次元配列(実数) np.random.rand(d)
>>> np.random.rand(3)
array([0.32114636, 0.78936863, 0.41989284])
min以上max未満の一様乱数(整数) np.random.randint(min, max)
>>> np.random.randint(3,10)
9
min以上max未満の一様乱数のd次元配列(整数) np.random.randint(min, max, d)
>>> np.random.randint(3,10,2)
array([3, 5])
平均0分散1の正規乱数 np.random.randn()
>>> np.random.randn()
2.368525791725796
平均0分散1の正規乱数のd次元配列 np.random.randn(d)
>>> np.random.randn(3)
array([ 2.27934657, -0.65301339, -2.65603142])

これで,乱数配列まで出来る.正規乱数は正規(normalize)の頭文字nが入ってrandnなんだろう.

乱数マトリックス(m行n列)にするには,以下のようにすればよい.

実行内容 命令 実行結果
0以上1未満の一様乱数のm行n列の行列 np.random.rand(m,n)
>>> np.random.rand(3,2)
array([[0.70828554, 0.93444287],
       [0.30447058, 0.24547408],
       [0.50824843, 0.19642615]])
min以上max未満の一様乱数(整数)のm行n列の行列 np.random.randint(min, max, (m,n))
>>> np.random.randint(2,5,(3,2))
array([[4, 3],
       [3, 2],
       [3, 2]])
平均0分散1の正規乱数のm行n列の行列 np.random.randn(m,n)
>>> np.random.randn(3,2)
array([[-1.76365059, -0.5851906 ],
       [-0.51735069,  0.19511416],
       [ 0.88991668,  0.43710865]])

これはもう覚えておいた方がいいだろう.特に奇異な法則はないけど,範囲を指定する乱数の場合,マトリクス形式にするには,カッコをいれて行数と列数を書くところがポイント.