Pythonのrandomモジュールは、様々な種類の乱数を生成するための強力なツールです。ランダムな整数や浮動小数点数の生成、シーケンスからのランダムな要素の選択など、多岐にわたる機能を提供しています。以下にrandomモジュールの主要機能と使用方法を詳しく解説します。
モジュールのインポート
randomモジュールを使用するには、まずインポートする必要があります:import random
ランダムな整数の生成
randint(a, b) aとbの間(aとbを含む)のランダムな整数を返します。random_value = random.randint(1, 10)
print(random_value) # 1から10の間の整数を出力
randrange(start, stop[, step])
startとstopの間(stopを含まない)のランダムな整数を返します。stepが指定された場合、そのステップ幅で値が選ばれます。stepを指定しない場合、デフォルトは1です。
random_num = random.randrange(0, 100, 10)
print(random_num) # 0から90の間(90を含まない)の10刻みの整数を出力
ランダムな浮動小数点数の生成
random() 0.0から1.0の間のランダムな浮動小数点数を返します。random_decimal = random.random()
print(random_decimal) # 0.0から1.0の間の浮動小数点数を出力
uniform(a, b)
aとbの間のランダムな浮動小数点数を返します。
random_decimal = random.uniform(1.5, 5.5)
print(random_decimal) # 1.5から5.5の間の浮動小数点数を出力
シーケンスからのランダムな選択
choice(seq) 空でないシーケンスseqからランダムに1つの要素を選択します。fruits = ['りんご', 'バナナ', 'オレンジ']
selected_fruit = random.choice(fruits)
print(selected_fruit) # リストからランダムに選ばれた果物を出力
shuffle(x)
シーケンスxの要素をランダムに並べ替えます(元のシーケンスを直接変更します)。
numbers = [1, 2, 3, 4, 5, 6]
random.shuffle(numbers)
print(numbers) # 要素がランダムに並べ替えられたリストを出力
sample(population, k)
populationシーケンスから重複しないk個の要素をランダムに選択します。
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
selected_items = random.sample(data, 4)
print(selected_items) # リストからランダムに選ばれた4つの重複しない要素を出力
乱数シードの設定
seed(a)関数を使用すると、乱数生成器にシードを設定できます。同じシードを使用すると、毎回同じ乱数列が生成されます。これは、再現可能な結果が必要なテストやシミュレーションに役立ちます。random.seed(123) # シードを123に設定
print(random.randint(1, 100)) # このコードを何度実行しても同じ整数が出力される
注意事項
- randomモジュールが生成する乱数は疑似乱数であり、決定性アルゴリズムによって生成されます。そのため、暗号的に安全な乱数が必要な場合は、randomモジュールではなくsecretsモジュールを使用する必要があります。
- デフォルトでは、乱数生成器のシードはシステムによって提供されるため、プログラムを実行するたびに生成される乱数列は異なる可能性があります。シードを設定することで、プログラムを実行するたびに同じ乱数列を生成することができます。