Pythonで乱数を扱いたいけれど、どう使えばよいのか迷っていませんか?
乱数は、ゲームやシミュレーション、データ分析、統計処理などさまざまな場面で活用されます。
この記事では、Pythonの標準ライブラリである「random」モジュールを使って、乱数を生成する基本的な方法から、実用的な使い方までをわかりやすく解説します。
初心者の方にも理解しやすいように、コード例を交えながら丁寧に紹介しますので、ぜひ参考にしてください。
randomモジュールとは?
Pythonで乱数を扱うには、「random」モジュールを使います。
このモジュールには、整数、実数、リストからのランダム選択など、さまざまな用途に対応した関数が用意されています。
import random
これが基本のインポート文です。
randomモジュールはPythonに標準で含まれているので、別途インストールする必要はありません。
整数の乱数を生成する:randint()
最もよく使われる関数のひとつが randint()
です。
random.randint(1, 10)
これは、1から10までの整数の中からランダムに1つ選んで返してくれます。
両端の値も含まれる点がポイントです。
例えば、サイコロの目をシミュレーションするには:
pythonコピーする編集するdice = random.randint(1, 6)
print(f"サイコロの出目は {dice} です")
小数の乱数を生成する:random()
0以上1未満のランダムな小数を得たい場合は random()
を使います。
value = random.random()
print(value)
これは、0.0以上1.0未満の浮動小数点数を返します。
もし、特定の範囲で小数を得たいなら、uniform()
を使う方法もあります。
pythonコピーする編集するrandom.uniform(1.5, 5.5)
このように書けば、1.5以上5.5以下のランダムな小数が得られます。
リストからランダムに選ぶ:choice()
ランダムに要素を選びたいときに便利なのが choice()
です。
colors = ['赤', '青', '黄', '緑']
print(random.choice(colors))
これは、colorsリストの中からランダムに1つ選んでくれます。
簡単なクイズアプリなどにも応用できます。
複数の要素をランダムに取り出す:sample()とchoices()
sample():重複なしの複数抽出
random.sample(colors, 2)
2つの異なる要素をランダムに選びたいときに使います。
重複なしで選ばれる点が特徴です。
choices():重複ありでもOK
random.choices(colors, k=3)
こちらは重複してもよい場合に使います。k=3
で、3つの要素をランダムに選びます。
リストの要素をシャッフルする:shuffle()
リストの並び順をランダムにしたいときは shuffle()
を使います。
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)
この関数はリスト自体を直接書き換えます。
トランプのシャッフルなどにも利用できます。
シード値を設定して乱数を再現する:seed()
乱数は毎回異なる結果が出ますが、同じ結果を得たいときは「シード値」を使います。
random.seed(42)
print(random.randint(1, 10))
同じシード値を使えば、実行結果は毎回同じになります。
デバッグや実験で結果を再現したいときに役立ちます。
応用例1:くじ引きプログラム
def lottery():
prizes = ['旅行券', 'テレビ', '図書カード', 'はずれ']
result = random.choice(prizes)
print(f"あなたの結果は… {result}!")
lottery()
ランダムに賞品が決まるくじ引きプログラムです。
応用例2:ランダムパスワードの生成
import string
def generate_password(length=8):
chars = string.ascii_letters + string.digits
return ''.join(random.choices(chars, k=length))
print(generate_password(12))
英数字をランダムに組み合わせたパスワードを自動で作れます。
応用例3:ランダムウォークのシミュレーション
position = 0
for i in range(10):
step = random.choice([-1, 1])
position += step
print(f"{i+1}歩目:位置 = {position}")
これは、1ステップごとに左右どちらかに移動する「ランダムウォーク」の簡易版です。
まとめ
Pythonのrandomモジュールを使えば、さまざまなランダム処理が簡単に実現できます。
基本的な関数だけでも、ゲーム開発、データ分析、セキュリティなど多くの分野で活躍します。
特に覚えておくべき関数は次の通りです。
randint()
:整数の乱数random()
:0~1の小数uniform()
:任意の範囲の小数choice()
:リストから1つ選ぶsample()
:リストから重複なしで複数選ぶchoices()
:リストから重複ありで複数選ぶshuffle()
:リストの並び替えseed()
:乱数の再現性を持たせる
ぜひ、自分のプロジェクトや学習に取り入れて、Pythonの乱数を活用してみてください。