【python】numpyで乱数を生成する1(rand, randn, choice等)

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

コメント

タイトルとURLをコピーしました