Python(パイソン)でプログラムを作るとき、乱数はゲームのシナリオやデータ分析などさまざまな場面で活躍します。randomモジュールはPython標準ライブラリとして提供されており、手軽に乱数を扱える便利なツールです。この記事では初心者の方向けに、randomモジュールの基本から応用までをやさしく解説していきます!
randomモジュールとは
randomモジュールは、疑似乱数(※真の乱数ではない)を生成するための機能をまとめたPython標準ライブラリです。
・さまざまな分布に従う乱数を簡単に取得できる
・標準ライブラリなので追加インストール不要
・シード(種)を指定して再現可能な乱数を生成可能
プログラミング学習の最初期から使える基本モジュールとして、ぜひ使い方をマスターしましょう。
モジュールのインポート方法
randomモジュールを利用するには、ファイルの先頭でimportします。
import random
この一行を追加すれば、以後random.
から始まる関数を自由に呼び出せます。
乱数の基本: random()
random.random()
は0以上1未満の浮動小数点乱数を返します。
for i in range(5):
print(random.random())
実行例
0.837492451705
0.022145839237
...
...
...
小数点以下の乱数を扱いたいときは、まずこの関数を覚えましょう。
整数の乱数: randint() と randrange()
整数乱数には2種類あります。
random.randint(a, b)
aからbまで(両端含む)の整数をランダムに返すrandom.randrange(start, stop[, step])
start以上stop未満の整数列からstep間隔でランダムに選ぶ
print(random.randint(1, 10)) # 1~10の整数
print(random.randrange(0, 101, 5)) # 0, 5, 10, ..., 100
ゲームのダイスロール(サイコロ)やスコア計算に便利です。
浮動小数点の範囲指定: uniform()
random.uniform(a, b)
はa以上b以下の浮動小数点数を返します。
print(random.uniform(1.5, 3.5)) # 1.5~3.5の小数
乱数を細かく制御したいシミュレーションやグラフ描画で活躍します。
リストからのランダム選択: choice()
リストやタプルなどのシーケンスから1要素をランダムに選ぶにはrandom.choice()
を使います。
cards = ['♠', '♥', '♦', '♣']
print(random.choice(cards)) # '♠', '♥', '♦', '♣'のいずれか
カードゲームやランダム抽選などの選択にぴったりです。
複数選択と並べ替え: sample() と shuffle()
random.sample(population, k)
populationから重複なくk個を選んでリストで返すrandom.shuffle(x)
リストxをインプレース(同じ変数名のまま)でシャッフル(順序を変更)
numbers = list(range(1, 51))
print(random.sample(numbers, 6)) # ロト抽選の例
random.shuffle(numbers) # numbersリストの中身をシャッフル
print(numbers[:5]) # シャッフル後の上位5つ
抽選、クイズの問題並び替え、デッキシャッフルなど幅広い用途があります。
乱数の再現性を保つ: シードの設定
乱数はシード(種)を与えることで、同じ乱数を再現できます。検証やデバッグ時に便利です。
random.seed(42)
print([random.random() for _ in range(3)]) # 常に同じ結果
シードに整数を指定すると、プロジェクト内で一貫した乱数生成が可能になります。
応用例
応用例1: ゲーム開発
- 敵の出現位置や攻撃パターン
- アイテムドロップの確率
- キャラクターのステータス生成
ゲームロジックに乱数をうまく取り入れると、プレイヤーにほどよいランダム性を提供できます。
応用例2: データ分析・シミュレーション
- モンテカルロ法による数値計算
- テストデータのランダム生成
- A/Bテストでのサンプル分割
randomモジュールで生成したデータを使って、現実世界の分析や予測を手軽に行えます。
注意点: 真の乱数ではない
randomモジュールは疑似乱数生成器(PRNG)を使っており、暗号用途には向きません。秘匿情報の取り扱いやセキュリティ要件がある場合は、secrets
モジュールの利用を検討しましょう。
まとめ
randomモジュールはPython初心者が乱数を使い始めるうえで欠かせないツールです。
- 基本の
random()
,randint()
,choice()
を覚える sample()
やshuffle()
でリスト操作seed()
で結果を再現可能に
シンプルなAPIながら応用範囲は広く、ゲームからデータ分析まで活用シーンが豊富です。ぜひこの記事を参考に、あなたのプログラミングに乱数の楽しさと可能性を取り入れてみてください!