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()メソッドで小数点以下を切り捨て
import random
random.random()
# 実行結果例
0.2784420953597535
type(random.random())
# 実行結果
float # <= float = 浮動小数点型
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)
import random
random.uniform(-100,100)
# 実行結果例
-48.557151859979754
type(random.uniform(-100,100))
# 実行結果
float # <= float = 浮動小数点型
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の数値分を区切った範囲内のランダムな整数を返します。
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は各々整数)の範囲内のランダムな整数を返します。
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(要素数)]の内包表記を用いたリストによって、任意の要素数を持ったランダムな浮動小数点のリストを生成します。
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は各々整数)の範囲内の任意の要素数を持ったランダムな整数のリストを生成します。
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()メソッドで小数点以下を切り捨て
import numpy as np
np.random.rand()
# 実行結果例
0.2802787220613472
type(np.random.rand())
# 実行結果
float # <= float = 浮動小数点型
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()メソッドで小数点以下を切り捨て
import numpy as np
np.random.random_sample()
# 実行結果例
0.03502849141727049
type(np.random.random_sample())
# 実行結果
float # <= float = 浮動小数点型
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で大きさを指定)
import random
np.random.randint(0,10,2).tolist()
# 実行結果例
[2, 9]
type(np.random.randint(0,10,2).tolist())
# 実行結果
list # <= list = リスト
コメント