スキルUPの道しるべ

本サイトはプロモーションを含みます
上に戻る

【Python】乱数の生成方法を例付きで解説!(randomの使い方)

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. 真の乱数と擬似乱数

Pythonrandomモジュールは、実際には「擬似乱数」を生成しています。

擬似乱数は、決定論的なアルゴリズムに基づいて生成されるため、完全にランダムではありません。

真の乱数が必要な場合は、randomモジュールではなく、secretsモジュールを使用することが推奨されます。

4.2. 同じ範囲で異なる乱数を生成するには?

乱数の範囲を指定している場合、同じ範囲内で繰り返し乱数を生成したいときは、シード値を設定することが有効です。

ただし、シード値を設定してしまうと、毎回同じ結果が出力されるので、その点に注意が必要です。

関連・おすすめ書籍

おすすめ書籍:

5. まとめ

Pythonでの乱数生成は簡単で強力です。randomモジュールを使えば、さまざまな方法で乱数を生成できます。

シード値の設定や複数の乱数生成など、必要に応じて使い分けて、実際のプログラムに役立ててください。

▼必見(ChatGPTを活用!おすすめAI副業)▼

今なら5000円分の特典あり!! dodgsonblog.com