この記事で学べる知識:乱数生成
この記事の練習問題で使用する知識:
入力と出力の基本、コメントの書き方、変数の宣言と代入、基本データ型と算術演算子、文字列の操作、フォーマット文字列、乱数生成
<<前の問題 | 問題集Top |
次の問題>> |
Ramdomモジュールによる「乱数生成」とは
この章ではPythonにおける「乱数生成」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。
プログラムの中でランダムな数値を扱うことは、ゲームやデータのシミュレーションなど、多くの場面で必要になります。
Pythonでは簡単に乱数を生成する機能が用意されています。この記事では基本的な乱数生成の方法について学んでいきましょう。
「乱数」とは特定の規則に従わない、予測できないランダムな数のことです。
コンピュータで生成される乱数は実際には「疑似乱数」と呼ばれ、特定のアルゴリズムに基づいて計算されていますが、私たちにはランダムに見えるものです。
Pythonでは疑似乱数を簡単に生成するための仕組みが標準で用意されています。
ランダムな数字を生成する方法
Pythonでは乱数を生成するために「モジュール」と呼ばれる機能を使います。
モジュールとはPythonに新しい機能を追加するためのツールのようなものです。現時点ではまだモジュールについて深く理解する必要はありません。
ここでは乱数の生成だけできるようになりましょう。
小数の乱数を生成する
0.0以上1.0未満のランダムな小数を生成したい場合は、次のコードを使います。
import random # 0.0 以上 1.0 未満のランダムな数を生成 n = random.random() print(n)
このコードを実行すると、0.0から1.0の間でランダムに選ばれた小数が変数nに代入され、printで表示されます。
最初に「import random」と書くことで、このコード内で乱数生成が使用可能になり、その後の「変数 = random.random()」の部分でランダムな数値を生成しています。まずはこの形を丸暗記しましょう。
実行するたびに異なる数値が表示されるので、試してみてください。
整数の乱数を生成する
特定の範囲で整数の乱数を生成することもよくあります。
たとえば1から6までの範囲でランダムに整数を生成したい場合、以下のコードを使います。
import random # 1 から 6 までのランダムな整数を生成 n = random.randint(1, 6) 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)
このコードを実行すると、例えば以下のように出力されます。
['ぶどう', 'みかん', 'バナナ']
まとめ
Pythonでは簡単に乱数を生成することができます。
今回は「モジュール」を使って乱数を生成しましたが、モジュールについては後で詳しく学ぶ予定です。
今はランダムな数を生成する基本的な方法を覚えて、プログラムに活用してみましょう!
練習問題1-6:1から100までのランダムな数字を表示しよう
プログラムでランダムに1から100までの間の整数を生成し、その数を表示するプログラムを作成しましょう。
さらに、f文字列を使って「あなたの番号は○○番です」と表示してください。
この問題の要件
以下の要件に従ってコードを完成させてください。
- ランダムな数を生成する機能を使って、1から100までの範囲の整数をランダムに生成すること。
- 生成されたランダムな数値を「あなたの番号は○○番です」という形式で表示すること。
- 生成された数値が毎回異なること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
あなたの番号は 57 番です
この問題を解くヒント
非常にシンプルな問題の為、ヒントはありません。
難しいと感じる場合は、上記のテキストを読み返してみましょう。
解答例と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
import random # 1から100までのランダムな整数を生成 random_number = random.randint(1, 100) # 結果を表示 print(f"あなたの番号は {random_number} 番です")
正解コードの解説
非常にシンプルなコードの為解説はありません。
難しいと感じる場合は上記のテキストを読み返してみましょう。
<<前の問題 |
問題集Top |
次の問題>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。