【Python】乱数作成 random, numpy.random

Pythonで乱数作成する場合、下記2種類の方法が選択肢に上がるかと思います。

①Python標準ライブラリの「random」モジュールを使用する方法

②numpyライブラリの「random」メソッドを使用する方法

①rondom(Python標準ライブラリ)

以降で、randomモジュールの各種メソッドを用いた乱数作成方法を解説致します。

①-1 random.random():0.0以上1.0未満のランダムな浮動小数点を返す。

・random()メソッドは、0.0以上1.0未満のランダムな浮動小数点を返します。

整数生成方法①random()メソッドで浮動小数点生成 → ②10の倍数を掛け1以上の数値を生成 → ③math.floor()メソッドで小数点以下を切り捨て

①-1-1 random.random()をそのまま使った例
import random
random.random()
# 実行結果例
0.2784420953597535

type(random.random())
# 実行結果
float # <= float = 浮動小数点型
①-1-2 random.random()とmath.floor()を使って1桁の整数を生成
import random
import math
math.floor(random.random()*10)
# 実行結果例
9
type(math.floor(random.random()*10))
# 実行結果
int # <= int = 整数型

①-2 random.uniform(a, b):任意の範囲内の浮動小数点を返す。

・uniform(a, b)メソッドは、a ~ bの範囲内のランダムな浮動小数点を返します。

・aとbはどちらが大きくても大丈夫です。(例、random.uniform(100, -100)。<= a=100, b=-100)

①-2-1 random.uniform()をそのまま使った例
import random
random.uniform(-100,100)
# 実行結果例
-48.557151859979754

type(random.uniform(-100,100))
# 実行結果
float # <= float = 浮動小数点型
①-2-2 random.uniform()とmath.floor()を使って1桁の整数を生成
import random
import math
math.floor(random.uniform(-10,10))
# 実行結果例
-3
type(math.floor(random.uniform(-10,10)))
# 実行結果
int # <= int = 整数型

①-3 random.randrange(start, stop, step):任意の範囲・ステップの整数

randrange(start, stop, step)メソッドは、start ~ stop中でstepの数値分を区切った範囲内のランダムな整数を返します。

①-3-1 random.randrange()をそのまま使った例
import random
random.randrange(0,10,2)
# 実行結果例
4
type(random.randrange(0,10,2))
# 実行結果
int # <= int = 整数

①-4 random.randint(a, b):任意の範囲の整数

randint(a, b)メソッドは、a ~ b(a, bは各々整数)範囲内のランダムな整数を返します。

①-3-1 random.randrange()をそのまま使った例
import random
random.randint(0,10)
# 実行結果例
4
type(random.randint(0,10))
# 実行結果
int # <= int = 整数

①-5 [random.random() for i in range(要素数)]:ランダムな浮動小数点のリストを生成

・[random.random() for i in range(要素数)]の内包表記を用いたリストによって、任意の要素数を持ったランダムな浮動小数点のリストを生成します。

①-5-1 [random.random() for i in range(要素数)]をそのまま使った例
import random
[random.random() for i in range(6)]
# 実行結果例
[0.49355023551278365,
 0.3095303594220865,
 0.9335393587216402,
 0.04706509735909825,
 0.7073267647313557,
 0.1419721855080175]
type([random.random() for i in range(6)])
# 実行結果
list # <= list = リスト型

①-6 [random.randint(a, b) for i in range(要素数)]:ランダムな整数のリストを生成

・[random.randint(a, b) for i in range(要素数)]の内包表記を用いたリストによって、a ~ b(a, bは各々整数)の範囲内の任意の要素数を持ったランダムな整数リストを生成します。

①-6-1 [random.randint(a, b) for i in range(要素数)]をそのまま使った例
import random
[random.randint(0,10) for i in range(6)]
# 実行結果例
[10, 0, 4, 9, 9, 10]
type([random.randint(0,10) for i in range(6)])
# 実行結果
list # <= list = リスト型

②numpy.random(Numpyライブラリのrandomメソッド)

以降で、numpyモジュールのrandomメソッドを用いた乱数作成方法を解説致します。

②-1 numpy.random.rand(): 0.0以上1.0未満のランダムな浮動小数点を返す。

・numpy.random.rand()メソッドは、0.0以上1.0未満のランダムな浮動小数点を返します。

・rand()に引数を渡すことで配列のサイズを指定出来ます。

np.random.rand(3).tolist() # 引数に1つの整数を渡すと、1次元配列が返される。
# 実行結果例 
# [0.6195269900299928, 0.2795557293671578, 0.554934971578252]

np.random.rand(3, 3).tolist() # 3 x 3 の配列
# 実行結果例 
# [[0.7375006993213833, 0.3181123752021908, 0.32465573556182725],
#  [0.8306225407940159, 0.3757988790208008, 0.9486298332890694],
#  [0.07837908803742744, 0.39153393145008486, 0.14396495722168512]]

整数生成方法①random.rand()メソッドで浮動小数点生成 → ②10の倍数を掛け1以上の数値を生成 → ③math.floor()メソッドで小数点以下を切り捨て

②-1-1 numpy.random.rand()をそのまま使った例
import numpy as np
np.random.rand()
# 実行結果例
0.2802787220613472

type(np.random.rand())
# 実行結果
float # <= float = 浮動小数点型
②-1-2 numpy.random.rand()とmath.floor()を使って1桁の整数を生成
import numpy as np
import math
math.floor(np.random.rand()*10)
# 実行結果例
8
type(math.floor(np.random.rand()*10))
# 実行結果
int # <= int = 整数型

②-2 numpy.random.random_sample(): 0.0以上1.0未満のランダムな浮動小数点を返す。

・numpy.random.random_sample()メソッドは、0.0以上1.0未満のランダムな浮動小数点を返します。

・random_sample()に引数を渡すことで配列のサイズを指定出来ます。

・rand()メソッドとの違いは、サイズの指定をタプル型で指定する点。

np.random.random_sample(3).tolist() # 引数に1つの整数を渡すと、1次元配列が返される。
# 実行結果例 
# [0.13179039510209756, 0.31068756364232786, 0.06833369837452408]

np.random.random_sample((3, 3)).tolist() # 3 x 3 の配列
# 実行結果例 
# [[0.13404017454459305, 0.13508637267274148, 0.6442539168300345],
#  [0.36432597689015955, 0.09773750936594694, 0.32396056766591697],
#  [0.25548539504852286, 0.3328221154524844, 0.27556160007552677]]

整数生成方法①random.rand()メソッドで浮動小数点生成 → ②10の倍数を掛け1以上の数値を生成 → ③math.floor()メソッドで小数点以下を切り捨て

②-2-1 numpy.random.random_sample()をそのまま使った例
import numpy as np
np.random.random_sample()
# 実行結果例
0.03502849141727049

type(np.random.random_sample())
# 実行結果
float # <= float = 浮動小数点型
②-2-2 numpy.random.random_sample()とmath.floor()を使って1桁の整数を生成
import numpy as np
import math
math.floor(np.random.random_sample()*10)
# 実行結果例
8
type(math.floor(np.random.rand()*10))
# 実行結果
int # <= int = 整数型

②-3 numpy.random.randint(low, high, size): 任意の範囲の整数

randint(low, high, size)メソッドは、low ~ highの範囲内のランダムな整数を単数またはリストで返します。(sizeで大きさを指定)

②-3-1 random.randint(low, high, size)をそのまま使った例
import random
np.random.randint(0,10,2).tolist()
# 実行結果例
[2, 9]
type(np.random.randint(0,10,2).tolist())
# 実行結果
list # <= list = リスト

コメント

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