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を用いたアプリ開発

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson1-5 フォーマット文字列を使いこなそう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson1-☆1 レッスン1の内容を総復習しよう

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データ構造|リストの定義と要素の追加をステップごとに解説【レッスン4-1】
Pythonデータ構造|リストの定義と要素の追加をステップごとに解説【レッスン4-1】

Pythonのrandomモジュールには、リストやその他のシーケンスからランダムに要素を選択するための便利な関数がいくつか用意されています。

ここでは、shufflechoicechoicessample という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から100までのランダムな数字を表示しよう

プログラムでランダムに1から100までの間の整数を生成し、その数を表示するプログラムを作成しましょう。

さらに、f文字列を使って「あなたの番号は○○番です」と表示してください。

問題の詳細条件

以下の要件に従ってコードを完成させてください。

  • ランダムな数を生成する機能を使って、1から100までの範囲の整数をランダムに生成すること。
  • 生成されたランダムな数値を「あなたの番号は○○番です」という形式で表示すること。
  • 生成された数値が毎回異なること。

ただし、以下のような実行結果となるコードを書くこと。

あなたの番号は 57 番です

問題の答え合わせと解説

この問題の一つの正解例とそのコードの解説を以下に示します。

一つの正解例

例えば以下のようなプログラムが考えられます。

Q
正解コード
import random

# 1から100までのランダムな整数を生成
random_number = random.randint(1, 100)

# 結果を表示
print(f"あなたの番号は {random_number} 番です")

正解例の詳細解説

非常にシンプルなコードの為解説はありません。

難しいと感じる場合は上記のテキストを読み返してみましょう。

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson1-5 フォーマット文字列を使いこなそう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson1-☆1 レッスン1の内容を総復習しよう

FAQ|Python学習の第一歩:乱数編

Q
Q1. 毎回同じ乱数が出ることがあるのはなぜ?

random.seed()で固定された値が使われているか、実行環境がキャッシュしている可能性があります。seed()を使わなければ毎回異なる値になります。

Q
Q2. 特定の範囲内で乱数を生成するには?

random.randint(1, 100) のように指定すると、1~100の範囲で整数の乱数が得られます。

Q
Q3. ランダムにリストから1つ選ぶには?

random.choice(list) を使えば、リスト内からランダムに1要素を選べます。ゲームや抽選などにも使えます。

質問用コンタクトフォーム

この記事はAIを用いて書いた記事です。

人間の目による確認も行っていますが、もし間違い等ありましたらご指摘頂けると大変助かります。

Python記事一覧へ戻る
トップページへ戻る

記事URLをコピーしました