randomモジュールで定義されているrandint関数/randrange関数/random関数/uniform関数を使用して乱数を生成したり、乱数列を生成したりする方法を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
import random
from random import randint, randrange, random, uniform
# 整数乱数の取得
num = randint(0, 5) # 0〜5の範囲の整数値をランダムに取得
print(num) # 2など
num = randrange(6) # 0〜5の範囲の整数値をランダムに取得
print(num) # 4など
num = randrange(10, 21) # 10〜20の範囲の整数値をランダムに取得
print(num) # 15など
num = randrange(0, 11, 2) # 0〜10の範囲の偶数をランダムに取得
print(num) # 10など
# 実数乱数(浮動小数点数)
num = random() # 0.0〜1.0の範囲の実装値をランダムに取得
print(num) # 0.3291879801592166など
num = uniform(0.5, 1.6) # 0.5〜1.6の範囲の実数値をランダムに取得
print(num) # 1.389340380844763など
# 乱数列の作成
int_list = [randint(0, 10) for _ in range(10)]
print(int_list) # [1, 9, 6, 0, 0, 1, 3, 3, 8, 9]など
float_list = [uniform(0, 10) for _ in range(10)]
print(float_list)
# 出力例:
#[0.26535969683863625, 1.988376506866485, 6.498844377795232, 5.449414806032166,
# 2.204406220406967, 5.892656838759088, 8.094304566778266, 0.06498759678061017,
# 8.05819251832808, 6.981393949882269]
Pythonに標準で付属するrandomモジュールを使うと、整数や浮動点小数の乱数を生成したり、リストからランダムに要素を抽出したりできる。本稿ではrandomモジュールが提供する以下の関数を使って整数と浮動点小数の乱数を生成する方法やリスト内包表記を使って乱数列を作成する方法を紹介する。
なお上記の関数は実際にはrandomモジュールで定義されているRandomクラスのインスタンスメソッドとなっていて、randomモジュール内部でRandomクラスのインスタンスを生成した上で、各メソッドに別名を付け、それらを関数として使えるようにエクスポートしている。
整数乱数を生成するにはrandint関数とrandrange関数が使える。前者は生成する値の範囲を指定するもので、後者はrange関数と同様な引数を取る。
random.randint(a, b)
random.randrange(start, stop=None[, step])
randint関数は戻り値をnとしたときに、a <= n <= bの範囲に含まれる整数値をランダムで返す。bに指定した境界値が戻り値の範囲に含まれるというのは通常のPythonの流儀とは異なる。これに対して、randrange関数ではrange関数と同様、stopに指定した値は戻り値の範囲には含まれない。つまり、start <= n < stopの範囲に含まれる整数値がランダムに返される。stepの解釈も同様となる。start > stopとなる値も指定できるが(例:randrange(10, 0, -1)など)、通常はそのような呼び出し方はしないだろう。
以下にrandint関数の使用例を示す。
import random
from random import randint, randrange
num = randint(0, 5) # 0〜5の範囲の整数値をランダムに取得
print(num) # 2など
この例では0〜5の範囲の整数値をランダムに取得している。上で述べた通り、randint関数では第2引数(b)に指定した値が戻り値の範囲に含まれる点に注意。
以下はrandrange関数の一番簡単な使用例だ。
num = randrange(6) # 0〜5の範囲の整数値をランダムに取得
print(num) # 4など
引数を1つだけ指定した場合、この関数は0から「第1引数に指定した値−1」の範囲に含まれる整数値をランダムに返送する。この例では、第1引数に6を指定しているので、実際には0〜5の範囲に含まれる整数値が返される。
引数を2つ指定した場合は「第1引数に指定した値」〜「第2引数に指定した値−1」の範囲に含まれる整数値がランダムに返送される。以下に例を示す。
num = randrange(10, 21) # 10〜20の範囲の整数値をランダムに取得
print(num) # 15など
このときには、start > stopとなるような指定をすると例外が発生する。
引数を3つ指定した場合の振る舞いは、range(start, stop, step)で指定した整数列の要素からランダムで取り出すものと考えられる。以下に例を示す。
num = randrange(0, 11, 2) # 0〜10の範囲の偶数をランダムに取得
print(num) # 10など
なお、randrange関数に1.2や'1'など、整数値と等しくない値を指定すると例外が発生する。
Copyright© Digital Advantage Corp. All Rights Reserved.