【Pythonの乱数生成】シード設定で再現性を持たせる!シャッフルや確率分布の使い方も紹介!

※関数の書き方・実行結果に誤りがあるケースがあります。随時修正中です。また誤りに気づかれた方はこちらからご連絡頂きますとめちゃ嬉しいです。

目次

今回の講座の導入文

みんな、Pythonでプログラミングするなら、ライブラリを使いこなすことが大事やで!特に、乱数を使うと、ゲームの要素を入れたり、データのサンプリングをしたり、いろんな場面で役立つんや。例えば、サイコロを振るゲームを作りたい時、乱数がないとただの数字の羅列になってしまうわ。せやから、Pythonの「random」ライブラリを使って、楽しく乱数を生成したり、リストからランダムに選んだりする方法を学んでいこうと思うで!これをマスターすれば、あなたのプログラムももっと面白くなること間違いなしや!

① 乱数の生成(整数、浮動小数点数)

乱数を生成するのは、プログラミングの中でもめっちゃ大事な機能やで。ここでは、整数と浮動小数点数の乱数を生成する方法を見ていくで!

整数の乱数生成

整数の乱数を生成するには、randint関数を使うんや。これを使うと、指定した範囲内の整数をランダムに生成できるんやで。例えば、1から10の間の乱数を生成してみよ!

import random

# 1から10の間の乱数を生成
integer_random = random.randint(1, 10)
print(integer_random)

浮動小数点数の乱数生成

次は、浮動小数点数の乱数を生成する方法や。これには、uniform関数を使うんや。この関数を使うと、指定した範囲内の浮動小数点数を生成できるで。例えば、0.0から1.0の間の乱数を生成してみよ!

# 0.0から1.0の間の浮動小数点数の乱数を生成
float_random = random.uniform(0.0, 1.0)
print(float_random)

まとめ

  • 整数の乱数はrandintを使う
  • 浮動小数点数の乱数はuniformを使う

これで、基本的な乱数の生成ができるようになったで!次に進む準備はできたかな?

② リストからのランダムな選択

次は、リストからランダムに選ぶ方法について学んでいくで!これを使えば、例えば、ゲームのキャラクターの選択や、ランダムな質問を出す時なんかに便利やで。

リストからのランダム選択

Pythonのrandomライブラリには、choice関数があって、これを使うとリストの中から1つの要素をランダムに選ぶことができるんや。例えば、好きな果物のリストからランダムに1つ選んでみよ!

import random

# 好きな果物のリスト
fruits = ['りんご', 'ばなな', 'みかん', 'ぶどう', 'いちご']

# リストからランダムに1つ選ぶ
random_fruit = random.choice(fruits)
print(random_fruit)

リストから複数のランダム選択

もしリストから複数の要素を選びたい場合は、sample関数を使うんや。これを使うと、指定した数の要素をランダムに選ぶことができるで。例えば、果物の中から2つ選んでみるで!

# リストからランダムに2つ選ぶ
random_fruits = random.sample(fruits, 2)
print(random_fruits)

まとめ

  • choice関数でリストから1つの要素をランダムに選ぶ
  • sample関数でリストから複数の要素をランダムに選ぶ

これでリストからのランダムな選択ができるようになったで!次はシャッフルの方法について学んでいこうか!

③ リストのシャッフル

さて、次はリストをシャッフルする方法について学んでいくで!シャッフルっていうのは、リストの要素の順番をランダムに入れ替えることや。これを使うと、例えばトランプのカードを混ぜたり、ランダムな順番で何かを表示したりする時に役立つで。

リストのシャッフル方法

Pythonのrandomライブラリには、shuffle関数があって、これを使うとリストの要素をシャッフルすることができるんや。具体的にどうやるか、見てみよ!

import random

# シャッフルしたいリスト
cards = ['ハート', 'ダイヤ', 'クローバー', 'スペード']

# リストをシャッフル
random.shuffle(cards)
print(cards)

シャッフルのポイント

  • shuffle関数は元のリストを直接変更するので、シャッフルした後のリストは元の順番を保持してないんや。
  • シャッフルした結果がどうなるかは、その時々で違うから、毎回違った結果が楽しめるで!

まとめ

  • shuffle関数を使ってリストの要素の順番をランダムに入れ替える
  • 元のリストは変更されるので注意やで

これでリストのシャッフルができるようになったな!次は、確率分布に基づく乱数生成について学んでいこう!

④ 確率分布に基づく乱数生成

次は、確率分布に基づく乱数の生成についてや!ここでは、特定の確率で値を選ぶ方法を学ぶで。例えば、ある選択肢が他の選択肢よりも選ばれやすい場合に使えるんや。

確率分布を使った乱数生成

Pythonのrandomライブラリには、いくつかの確率分布に基づいた乱数生成の関数があるんや。その中でも代表的なのがchoices関数や。この関数を使うと、リストの中から指定した確率で要素を選ぶことができるで。

例: 確率分布の設定

例えば、サイコロのように、ある数字が出る確率を変えたいとするやん。以下の例では、1が出る確率を50%、それ以外の数字はそれぞれ15%ずつ出るように設定してみるで。

import random

# 選択肢のリスト
numbers = [1, 2, 3, 4, 5, 6]

# 確率を設定(合計は100%になるように)
weights = [50, 15, 15, 10, 5, 5]

# 確率に基づいて乱数を生成
random_number = random.choices(numbers, weights=weights, k=1)
print(random_number[0])

確率分布のポイント

  • choices関数のweightsパラメータで、各要素が選ばれる確率を設定する。
  • kパラメータで、生成する乱数の個数を指定できるで。

まとめ

  • choices関数を使って、確率分布に基づいた乱数を生成できる
  • 各要素の選ばれる確率をweightsで設定する

これで確率分布に基づく乱数生成ができるようになったな!次は乱数シードの設定と再現性について学んでいこう!

⑤ 乱数シードの設定と再現性

最後に、乱数シードの設定について学んでいくで!乱数生成は毎回異なる結果を出すんやけど、特定のシードを設定することで、同じ乱数のシーケンスを再現できるようになるんや。これが特に便利なのは、テストやデバッグの時やな。

乱数シードの設定

乱数シードは、乱数の生成アルゴリズムに与える初期値や。シードを設定することで、毎回同じ乱数の順序を生成することができるんや。これを使うと、同じ実行結果を得ることができるで。

例: シードの設定

以下の例では、シードを設定してから乱数を生成してみるで。

import random

# シードを設定
random.seed(42)

# 乱数を生成
random_number1 = random.randint(1, 10)
random_number2 = random.randint(1, 10)

print(random_number1)
print(random_number2)

# 再び同じシードを設定
random.seed(42)

# 再度乱数を生成
random_number3 = random.randint(1, 10)
random_number4 = random.randint(1, 10)

print(random_number3)
print(random_number4)

シードのポイント

  • seed関数でシード値を設定することで、以降の乱数生成が再現可能になる。
  • 同じシードを使えば、同じ順序の乱数が得られるから、デバッグや実験に便利やで。

まとめ

  • seed関数で乱数シードを設定することで、同じ乱数のシーケンスを再現できる
  • テストやデバッグの時に特に役立つで

これで乱数シードの設定と再現性についての講義は終わりや!これからは、いろんな場面で乱数を活用してみてな!次の章も楽しみにしててな!

【Pythonの乱数生成】シード設定で再現性を持たせる!シャッフルや確率分布の使い方も紹介!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次