【Python】レッスン1-6:乱数を生成しよう

一つ前のLessonではフォーマット文字列について学習しました。
今回は乱数の生成について見ていきます。
Lesson1:基礎文法編
・Lesson1-1:Pythonの入り口|初めてコードを書いてみよう
・Lesson1-2:変数の基本を理解しよう
・Lesson1-3:四則演算をしよう
・Lesson1-4:文字列を操作しよう
・Lesson1-5:フォーマット文字列を使いこなそう
・Lesson1-6:乱数を生成しよう ◁今回はココ
・練習問題1-1:レッスン1の内容を総復習しよう
Lesson2:制御構造編
Lesson3:関数とスコープ編
Lesson4:データ構造編
Lesson5:オブジェクト指向編
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)
randomモジュールで学ぶ乱数生成の基本
Pythonでプログラムを書いていると、サイコロの目をシミュレーションしたり、データをランダムに選び出したりと、予測できない値(乱数)を扱いたい場面がしばしばあります。
こうした処理を実現するのが、Pythonに標準搭載されている randomモジュール です。
乱数を扱えるようになると、ゲームの挙動を作ったり、統計的なシミュレーションを行ったり、テストデータを自動生成したりと、実用的なプログラムの幅が一気に広がります。
それでは、乱数生成の基礎から具体的な使い方まで、randomモジュールを中心に学んでいきましょう。
乱数を生成する方法|randomモジュールの基本
Pythonでは乱数を生成するために「モジュール」と呼ばれる機能を使います。
モジュールとはPythonに新しい機能を追加するためのツールのようなものです。現時点ではまだモジュールについて深く理解する必要はありません。(レッスン5で学習します)
ここでは乱数の生成だけできるようになりましょう。
Randomモジュールを使用するには、コードの最初でインポートする必要があります。
import random # Randomモジュールのインポート # これを書くことで乱数生成の機能が使えるようになる
小数の乱数を生成する方法|random()関数の使い方
0.0以上1.0未満のランダムな小数を生成したい場合は、次のコードを使います。
import random # Randomモジュールのインポート # 0.0 以上 1.0 未満のランダムな数を生成 n = random.random() # random.random()関数で乱数生成し、変数nに代入 print(n)
このコードを実行すると、0.0から1.0の間でランダムに選ばれた小数が変数nに代入され、printで表示されます。
最初に「import random」と書くことで、このコード内で乱数生成が使用可能になり、その後の「変数 = random.random()」の部分でランダムな数値を生成しています。
この意味を理解するには、レッスン5:クラス編の知識が必要になります。現時点ではこの形を丸暗記しましょう。
実行するたびに異なる数値が表示されるので、試してみてください。
整数の乱数を生成する方法|randint()関数の使い方
特定の範囲で整数の乱数を生成することもよくあります。
たとえば1から6までの範囲でランダムに整数を生成したい場合、以下のコードを使います。
import random # Randomモジュールのインポート # 1 から 6 までのランダムな整数を生成 n = random.randint(1, 6) # random.randint()関数で乱数生成し、変数nに代入 print(n)
このコードでは1から6までの整数がランダムに選ばれます。
これを何度か実行すると毎回異なる数字が表示されるのが確認できます。サイコロを振るような場面で役立つコードです。
前の例では「変数 = random.random()」だったのが今回は「変数 = random.randint(1, 6)」に変わっている点に注意しましょう。
「import random」は一つのコード内に一つ書いていれば、何度でも使用可能です。
リストをランダムに操作する方法
このサイトの1-1から順番に勉強している人は、まだ「リスト」が何かを知らないはずです。
その場合はこの章は読み飛ばし、リスト学習後にまた戻ってきてください。
Pythonのrandom
モジュールには、リストやその他のシーケンスからランダムに要素を選択するための便利な関数がいくつか用意されています。
ここでは、shuffle
、choice
、choices
、sample
という4つの関数を紹介します。
shuffle()
関数|リストをシャッフルする
shuffle()
関数 を使うとリスト内の要素をランダムに並べ替えることができます。
import random fruits = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'パイナップル'] random.shuffle(fruits) print(fruits)
このコードを実行すると、例えば以下のように出力されます。
['ぶどう', 'バナナ', 'みかん', 'りんご', 'パイナップル']
choice()
関数|1つの要素を選択する
choice()
関数 はリストやタプルなどのシーケンスから 1つの要素をランダムに選択 するために使います。
例えば、以下のコードでリストから1つの果物をランダムに選んでいます。
import random fruits = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'パイナップル'] selected_fruit = random.choice(fruits) print(selected_fruit)
このコードを実行すると、例えば以下のように出力されます。
バナナ
choices()
関数|複数の要素を選択する
choices()
関数 はリストから 複数の要素をランダムに選択 する場合に使います。
choices()
では選択する数を指定でき、同じ要素が複数回選ばれること(重複選択)が可能です。
import random fruits = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'パイナップル'] selected_fruits = random.choices(fruits, k=3) print(selected_fruits)
このコードを実行すると、例えば以下のように出力されます。
['みかん', 'バナナ', 'バナナ']
sample()
関数|重複しないランダムな要素を選択する
sample()
関数 は、リストの中から 重複しない要素をランダムに選ぶ 方法です。
選んだ要素は元のリスト内で一度しか選ばれません。
import random fruits = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'パイナップル'] selected_fruits = random.sample(fruits, k=3) print(selected_fruits)
このコードを実行すると、例えば以下のように出力されます。
['ぶどう', 'みかん', 'バナナ']
まとめ|randomモジュールでを使いこなそう
今回の学習では、randomモジュールを使った乱数生成の基本を確認しました。
小数や整数をランダムに生成する方法から、リストの要素をシャッフルしたり、ランダムに選択したりといった操作までを幅広く学びました。
これらを理解することで、サイコロのシミュレーションやランダムなデータ抽出など、実用的で応用の利くプログラムを作成できるようになります。
基礎を押さえた今こそ、さらに幅広いプログラミングへと挑戦する準備が整いました。学んだ知識を活かし、自信を持って次の学習を進めていきましょう。
- サイト改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
【Python】サイト改善アンケート
練習問題:randomモジュールを使ってみよう
この記事で学習した「乱数生成」を復習する練習問題に挑戦しましょう。
問題|1から100までのランダムな数字を表示しよう
プログラムでランダムに1から100までの間の整数を生成し、その数を表示するプログラムを作成しましょう。
さらに、フォーマット文字列を使って「あなたの番号は○○番です」と表示してください。
以下の要件に従ってコードを完成させてください。
- ランダムな数を生成する機能を使って、1から100までの範囲の整数をランダムに生成すること。
- 生成されたランダムな数値を「あなたの番号は○○番です」という形式で表示すること。
- 生成された数値が毎回異なること。
ただし、以下のような実行結果となるコードを書くこと。
あなたの番号は 57 番です
解答例|乱数を使った番号表示プログラム
例えば以下のようなプログラムが考えられます。
- 正解コード
-
import random # 1から100までのランダムな整数を生成 random_number = random.randint(1, 100) # 結果を表示 print(f"あなたの番号は {random_number} 番です")
乱数生成の疑問解消|FAQと用語のまとめ
初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。
理解を深めたいときや、ふと疑問に感じたときに役立ててください。
FAQ|乱数生成に関するよくある質問
- Q1. 毎回同じ乱数が出ることがあるのはなぜ?
-
random.seed()
で固定された値が使われているか、実行環境がキャッシュしている可能性があります。seed()
を使わなければ毎回異なる値になります。
- Q2. 特定の範囲内で乱数を生成するには?
-
random.randint(1, 100)
のように指定すると、1~100の範囲で整数の乱数が得られます。
- Q3. ランダムにリストから1つ選ぶには?
-
random.choice(list)
を使えば、リスト内からランダムに1要素を選べます。ゲームや抽選などにも使えます。
Python用語集|乱数生成に関する用語一覧
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。
Python用語 | 定義・使い方の概要 | 解説記事へのリンク |
---|---|---|
乱数 | 予測できないランダムな数値で、シミュレーションやゲームなどに使用される | 本記事 |
モジュール | Pythonで特定の機能をまとめた外部ファイル。import で読み込んで利用する | Lesson5-8 |
random モジュール | 乱数を生成するための標準ライブラリ。数値のランダム取得やリストのシャッフルに使う | 本記事 |
random.random() 関数 | 0以上1未満のランダムな浮動小数点数を返す関数 | 本記事 |
random.randint() 関数 | 指定した範囲内の整数からランダムに1つを返す関数 | 本記事 |
shuffle() 関数 | リストの要素をランダムな順序に並び替える関数 | 本記事 |
choice() 関数 | シーケンスからランダムに1要素を選んで返す関数 | 本記事 |
choices() 関数 | シーケンスから指定数だけ重複を許してランダムに選ぶ関数 | 本記事 |
sample() 関数 | シーケンスから指定数の要素を重複なしでランダムに選ぶ関数 | 本記事 |
リスト | 複数の値を順序付きで格納するデータ構造で、要素の追加や変更が可能 | Lesson4-1 |
タプル | リストに似たデータ構造だが、作成後に要素を変更できない(イミュータブル) | Lesson4-9 |
フォーマット文字列 | 文字列に変数の値を埋め込むための表記方法。f"..." や format() を使う | Lesson1-5 |