【Python】randomモジュールについて【標準ライブラリ】
randomモジュールの概要
Pythonの標準ライブラリであるrandomモジュールは、乱数生成に関連する多くの関数を提供しています。これにより、ランダムな数値の生成、リストのシャッフル、確率的な選択などが簡単に行えます。randomモジュールは、数値の乱数だけでなく、シーケンスからランダムに要素を選んだり、特定の確率に従って値をサンプリングすることも可能です。
乱数の生成
randomモジュールには、基本的な乱数生成のための関数がいくつかあります。例えば、random.random()
関数を使うことで、0以上1未満の浮動小数点数の乱数を生成できます。
import random
print(random.random()) # 0.0以上1.0未満のランダムな浮動小数点数を表示
また、random.randint(a, b)
を使用すると、指定した範囲[a, b]の間で整数をランダムに生成できます。
print(random.randint(1, 10)) # 1から10の間でランダムな整数を表示
リストのシャッフルとランダム選択
randomモジュールはリストの要素をランダムにシャッフルすることができます。random.shuffle()
関数を使用することで、リストの順序をランダムに変更することができます。
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list) # リストがランダムにシャッフルされて表示
さらに、random.choice()
関数を使うことで、リストからランダムに1つの要素を選ぶことができます。
print(random.choice([10, 20, 30, 40])) # リストからランダムに1つの要素を選択
ランダムな範囲の生成
random
モジュールでは、指定した範囲内でランダムな整数を生成するrandom.randrange(start, stop, step)
関数も用意されています。この関数は、指定された範囲内で任意の整数を返します。
print(random.randrange(0, 100, 5)) # 0から100未満で5刻みの整数をランダムに選択
また、random.uniform(a, b)
を使用すると、指定した範囲[a, b]でランダムな浮動小数点数を生成できます。
print(random.uniform(1, 10)) # 1から10の間でランダムな浮動小数点数を表示
確率分布に基づくサンプリング
randomモジュールは、特定の確率分布に基づいてサンプリングを行うための関数も提供しています。例えば、random.gauss(mu, sigma)
を使うことで、正規分布に従う乱数を生成できます。
print(random.gauss(0, 1)) # 平均0、標準偏差1の正規分布に従う乱数を生成
他にも、random.expovariate(lambd)
は指数分布に従う乱数を生成することができます。
print(random.expovariate(1)) # 平均1の指数分布に従う乱数を生成
シードの設定
乱数生成は通常、実行するたびに異なる結果を返しますが、同じ乱数列を再現したい場合は、random.seed()
を使用してシードを設定できます。シードを設定することで、プログラムの実行ごとに同じ乱数を生成することができます。
random.seed(42) # シードを設定
print(random.random()) # 同じシード値を使うと、毎回同じ乱数が得られる