
プログラミングの世界に足を踏み入れた皆さん、こんにちは! いつも私の技術ブログを読んでくださり、ありがとうございます。今回のテーマは、Pythonの標準ライブラリであるrandomです。皆さんのプログラムに「予測不可能性」というスパイスを加えたいと思ったことはありませんか? ゲームでキャラクターの動きをランダムにしたり、シミュレーションで偶然性を表現したり、あるいは単純にジャンケンゲームを作ったり……。randomライブラリは、そんな願いを手軽に、そして強力にサポートしてくれる心強い味方です。
randomライブラリを使うと、まるで魔法みたいにプログラムに動きが出ますよね!
概要
Pythonのrandomライブラリは、その名の通り「乱数」を生成するための機能を提供します。乱数と聞くと難しく感じるかもしれませんが、要は「規則性がなく、予測できない数値」のこと。例えば、サイコロを振って出る目のように、次に何が出るか分からない数をコンピューターに作ってもらうイメージです。
このライブラリはPythonに標準で搭載されているため、別途インストールする手間なくすぐに使い始めることができます。生成される乱数は厳密には「擬似乱数」と呼ばれ、完全に予測不能な真の乱数とは異なりますが、多くの一般的な用途には十分すぎるほどの品質を持っています。
メリット
randomライブラリを使うメリットはたくさんあります。
- 手軽さ: Pythonの標準ライブラリなので、
import randomと記述するだけで準備完了です。特別な設定や外部ライブラリのインストールは一切不要です。 - 多様な機能: 0.0から1.0までの浮動小数点数、特定の範囲内の整数、リストやタプルなどのシーケンスからの要素の選択、シーケンスのシャッフルなど、多岐にわたる乱数生成メソッドが用意されています。
- 活用範囲の広さ:
- ゲーム開発: 敵キャラクターのランダムな出現、クリティカルヒットの判定、カードゲームでのシャッフルなど。
- シミュレーション: 物理現象や社会現象のモデリング、モンテカルロ法など。
- データサイエンス: サンプリング、データセットの分割など。
- その他: パスワードの自動生成(ただしセキュリティ要件が高い場合は
secretsモジュール推奨)、抽選プログラムなど。
- 再現性: 必要に応じて「シード」を設定することで、同じ乱数列を再現できるため、プログラムのデバッグやテストにも役立ちます。
サンプルコード
それでは、実際にrandomライブラリの主要な関数を使ってみましょう。
import random
# 1. 0.0以上1.0未満の浮動小数点数を生成
# 例: 0.123456789...
print(f"random.random(): {random.random()}")
# 2. 指定範囲の整数を生成 (a <= N <= b)
# 例: 1から6までの整数(サイコロの目)
print(f"random.randint(1, 6): {random.randint(1, 6)}")
# 3. リストやタプルなどのシーケンスからランダムに1つの要素を選択
choices = ["大吉", "中吉", "小吉", "末吉", "凶"]
print(f"random.choice(['大吉', '中吉', '小吉', '末吉', '凶']): {random.choice(choices)}")
# 4. シーケンスの要素をランダムにシャッフル (元のリストが変更されます)
cards = ["A", "K", "Q", "J", "10"]
random.shuffle(cards)
print(f"random.shuffle(['A', 'K', 'Q', 'J', '10']): {cards}")
# 5. シーケンスから重複なしで指定個数の要素を選択
# 例: 1から100までの数字から5つをランダムに選ぶ
numbers = list(range(1, 101))
selected_numbers = random.sample(numbers, 5)
print(f"random.sample(range(1, 101), 5): {selected_numbers}")
# 6. シードを設定して乱数の再現性を確認
print("\n--- シード設定の例 ---")
random.seed(42) # 特定の整数をシードとして設定
print(f"random.seed(42)後の random.random(): {random.random()}")
random.seed(42) # もう一度同じシードを設定すると、同じ乱数列が始まる
print(f"random.seed(42)後の random.random(): {random.random()}")色々な乱数の生成方法があるんですね!これで私ももっと面白いプログラムが作れそうです♪
みーちゃんのワンポイント
randomライブラリはとても便利ですが、生成されるのは「擬似乱数」であるということを覚えておきましょう。また、パスワード生成などセキュリティが特に重要な場面では、randomではなくsecretsライブラリの利用を強くおすすめします。

