Pythonでは、random
モジュールを使って簡単に乱数を生成できます。
そこで、この記事では、乱数の基本的な生成方法から、応用的なテクニックまで、具体的なコード例を交えて解説します。
1. Pythonで乱数を生成する基本的な方法
乱数を生成する方法にはいくつかの種類があります。
まずは、最も基本的な方法を見ていきましょう。
Pythonでは、random
という標準ライブラリを使って、簡単に乱数を生成することができます。
1.1. 整数の乱数生成
整数の乱数を生成するには、random.randint(a, b)
を使います。
a
からb
までの範囲でランダムな整数を返します。
import random # 1から10までのランダムな整数を生成 random_number = random.randint(1, 10) print(random_number)
このコードを実行すると、1から10までの間でランダムな整数が出力されます。
例えば、「3」や「8」などが生成されるかもしれません。
1.2. 小数(浮動小数点数)の乱数生成
浮動小数点数の乱数を生成するには、random.uniform(a, b)
を使います。
この関数は、a
からb
の範囲でランダムな小数を返します。
# 1.0から10.0までのランダムな浮動小数点数を生成 random_float = random.uniform(1.0, 10.0) print(random_float)
このコードを実行すると、例えば「7.483」や「3.192」などの小数がランダムに出力されます。
2. 複数の乱数を一度に生成
時には、複数の乱数を一度に生成したい場合もあります。
random
ライブラリでは、複数の乱数を生成するための便利な関数も提供されています。
2.1. 複数の整数の乱数生成
random.sample()
を使うと、指定した範囲から指定した数だけランダムに整数を選ぶことができます。
# 1から100までの整数の中から5つランダムに選ぶ random_numbers = random.sample(range(1, 101), 5) print(random_numbers)
このコードを実行すると、例えば「[17, 42, 59, 63, 91]」など、1から100の間でランダムに選ばれた5つの整数が表示されます。
2.2. 複数の小数の乱数生成
同様に、浮動小数点数の乱数を複数生成することもできます。
# 1.0から10.0までの間で3つのランダムな浮動小数点数を生成 random_floats = [random.uniform(1.0, 10.0) for _ in range(3)] print(random_floats)
これにより、例えば「[2.341, 7.118, 9.905]」などのランダムな浮動小数点数が生成されます。
3. 乱数生成の応用:シード値の設定
乱数を生成する際に、同じ結果を再現したい場合があります。
このような場合に使うのが「シード値」です。
シード値を設定すると、乱数の生成が決定論的(同じシード値からは同じ乱数列が生成)になります。
3.1. シード値を設定する方法
random.seed(a=None)
を使うことでシード値を設定できます。
a
に任意の整数を指定すると、その整数を基に乱数が生成されます。
# シード値を設定 random.seed(42) # シード値に基づく乱数を生成 random_number_1 = random.randint(1, 10) random_number_2 = random.randint(1, 10) print(random_number_1) print(random_number_2)
ここでシード値を「42」に設定したので、コードを何度実行しても、必ず同じ2つの乱数が生成されます。
3.2. シード値なしの乱数生成
シード値を指定しない場合、毎回異なる乱数が生成されます。
シード値を指定しないと、実行のたびに異なる乱数列が生成されます。
# シード値を設定せずに乱数を生成 random_number_3 = random.randint(1, 10) random_number_4 = random.randint(1, 10) print(random_number_3) print(random_number_4)
シード値を設定していない場合、実行するたびに異なる値が生成されます。
4. よくある疑問と注意点
乱数を使う際に、よくある疑問や注意点についても触れておきます。
4.1. 真の乱数と擬似乱数
Pythonのrandom
モジュールは、実際には「擬似乱数」を生成しています。
擬似乱数は、決定論的なアルゴリズムに基づいて生成されるため、完全にランダムではありません。
真の乱数が必要な場合は、random
モジュールではなく、secrets
モジュールを使用することが推奨されます。
4.2. 同じ範囲で異なる乱数を生成するには?
乱数の範囲を指定している場合、同じ範囲内で繰り返し乱数を生成したいときは、シード値を設定することが有効です。
ただし、シード値を設定してしまうと、毎回同じ結果が出力されるので、その点に注意が必要です。
関連・おすすめ書籍
おすすめ書籍:
5. まとめ
Pythonでの乱数生成は簡単で強力です。random
モジュールを使えば、さまざまな方法で乱数を生成できます。
シード値の設定や複数の乱数生成など、必要に応じて使い分けて、実際のプログラムに役立ててください。
▼必見(ChatGPTを活用!おすすめAI副業)▼
今なら5000円分の特典あり!! dodgsonblog.com