Python - 乱数を生成する

乱数を生成するには、標準モジュールのrandomを使用します。randomモジュールには、様々な型や範囲の乱数を生成するための関数が用意されています。

範囲を指定して乱数を生成(整数)

randintメソッドを使用します。引数に最小値と最大値を渡すと、その範囲内で乱数を返します。

random.randint() の使用方法

import random

結果(最小値 <= x =< 最大値) = random.randint(最小値, 最大値)

次のコードは -10 ~ 10 の乱数を生成し、結果を表示します。

import random

# 結果 = -10 ~ 10
intValue = random.randint(-10, 10)
print(f'random.randint(-10, 10) -> {intValue}')

引数にint以外の値を渡すとエラーが発生します。

# 少数を渡すとエラーが発生する
intValue = random.randint(0, 10.5)

# 文字列を渡すとエラーが発生する
intValue = random.randint(0, '10')

範囲と増加量(step)を指定して乱数を生成(整数)

randrangeメソッドを使用します。引数に開始値、終了値、増加量を渡します。開始値 <= x < 終了値 の範囲内で、開始値 + 増加量 の値を返します。

random.randrange() の使用方法

import random

結果(開始値 <= x(開始値+増加量) < 終了値) = random.randrange(開始値, 終了値, 増加量)
増加量(step)による、結果の違い
# 結果 = 0 ~ 9
intValue = random.randrange(0, 10, 1)

# 結果 = 0, 2, 4, 6, 8
intValue = random.randrange(0, 10, 2)

# 結果 = 0, 3, 6, 9
intValue = random.randrange(0, 10, 3)

# 結果 = 0, 4, 8
intValue = random.randrange(0, 10, 4)

# 結果 = 0, 5
intValue = random.randrange(0, 10, 5)

0.0 <= x < 1.0 の乱数を生成(浮動小数点数)

randomメソッドを使用します。randomメソッドは 0.0 <= x < 1.0 の範囲で浮動小数点数(float)を返します。

random.random() の使用方法

import random

結果(0.0 <= x < 1.0) = random.random()

0.0 <= x < 1.0 の乱数を生成し、結果を表示します。

import random

# 結果 = 0.0 <= x < 1.0
floatValue = random.random()
print(f'random.random() -> {floatValue}')

範囲を指定して乱数を生成(浮動小数点数)

uniformメソッドを使用します。引数に最小値と最大値を渡すと、その範囲内で乱数を返します。第2引数に渡す 最大値 または 最小値 が返るかは、浮動小数点の丸めに依存します。

random.uniform() の使用方法

import random

結果(最小値 <= x =< 最大値(丸めに依存)) = random.uniform(最小値, 最大値)
結果(最小値(丸めに依存) <= x =< 最大値) = random.uniform(最大値, 最小値)

次のコードは -0.005 <= N <= 0.005 の乱数を生成し、結果を表示します。

import random

# 結果 = -0.005 <= N <= 0.005
floatValue = random.uniform(-0.005, 0.005)
print(f'random.uniform(-0.005, 0.005) -> {floatValue}')

# 結果 = -0.005 <= N <= 0.005
floatValue = random.uniform(0.005, -0.005)
print(f'random.uniform(0.005, -0.005) -> {floatValue}')
サンプルコードの実行結果
サンプルコードの実行結果

リスト(配列)をランダムに並べ替える

random.randint() メソッドの引数にリストを渡すと、リストがランダムに並び替えされます。詳細は次の記事を参照してください。

参考資料

検証環境