numpyで乱数を生成する時はnumpy.randomを用います。
今回は一様乱数、正規乱数、指定した確率分布に従った乱数を生成する方法を紹介します。
この記事内ではnumpyをnpとしてimportしているとします。
>>> import numpy as np
一様乱数を生成 numpy.random.rand
一様乱数(0〜1)を生成するときにnumpy.random.rand()を用います。
引数は出力する乱数配列の次元を表しています。
引数を与えなければ、0〜1の間の一様乱数を1つ出力します。
>>> np.random.rand() 0.466129290806067
引数は次元を表しており、
指定した次元の乱数が格納された配列を返します。
>>> np.random.rand(2) array([0.03159599, 0.60799415]) >>> np.random.rand(2, 2) array([[0.34753166, 0.39862729], [0.18122357, 0.44865626]])
正規分布に従う乱数 numpy.random.randn
正規分布に従う乱数(正規乱数)を生成したい時には、
numpy.random.randn()を用います。
引数はrand()と同様に出力する乱数配列の次元です。
以下サンプルコード
>>> np.random.randn() -0.9622838652626542 >>> np.random.randn(2) array([-0.91307194, -0.59074054]) >>> np.random.randn(2,2) array([[ 1.70441935, -1.71376629], [ 2.0887503 , -0.80922861]])
整数の乱数を生成 numpy.random.randint
整数の乱数を生成したい時にはnumpy.random.randint()が便利です。
numpy.random.randint(x)でx未満の整数の乱数を生成します。
sizeによって出力する乱数配列の次元を設定できます。
>>> np.random.randint(5) 3 >>> np.random.randint(5, size=10) array([3, 0, 3, 2, 2, 1, 4, 1, 0, 0]) >>> np.random.randint(5, size=(2, 2)) array([[4, 0], [2, 3]])
第二引数を設定した場合np.random.randint(x, y)にはx以上y未満の整数を生成します。
>>> np.random.randint(1, 4) 2 >>> np.random.randint(1, 4, size=10) array([3, 1, 1, 2, 1, 1, 2, 3, 1, 3]) >>> np.random.randint(1, 4, size=(2, 2)) array([[3, 1], [2, 3]])
指定した配列からランダムで抽出 numpy.random.choice
指定した配列からランダムで要素を抽出したい場合にはnumpy.random.choice()を用います。
>>> arr = [3,2,4,1] >>> np.random.choice(arr) 2
一様にランダムではなくて、指定した確率分布を用いたい時には、
引数のpに確率分布を設定することができます。
>>> p = [0.1,0.5,0.3,0.1] >>> np.random.choice(arr,p=p) 2 >>> np.random.choice(arr,size=10,p=p) array([4, 4, 2, 2, 2, 2, 2, 4, 3, 2])
参考文献
https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html#numpy.random.randint
コメント