python random choice/重複なしの乱数

Pythonのランダム選択

Pythonのランダム
Pythonは乱数を扱うrandomモジュールという標準ライブラリを提供しています。

関連)Pythonのrandomでランダムなデータを生成

このモジュールを使えば、整数や浮動小数点数の乱数を生成したり、リストからランダムな要素を抽出したりすることができます。

また、乱数リストを生成するために便利な関数も用意されています。

Pythonのrandom.choiceで乱数リスト生成

Pythonのrandom.choice

乱数のリストを生成できるのが、random.choice関数。

リストまたは集合から引数で指定した個数の要素を重複ありのランダム抽出し、その要素からなる新しいリストを作成することができます。

  1. ランダムに選択したい要素のリストまたは文字列を用意する。
  2. random.choice() 関数を繰り返し実行して、リストまたは文字列からランダムに要素を一つずつ選択する。
  3. 選択した要素を新しいリストに追加する。

1 から 10 までの整数からランダムに 5 つの要素を抽出して、新しいリストに追加

以下のコードは、1 から 10 までの整数からランダムに 5 つの要素を抽出して、新しいリストを作成するサンプルコードです。

import random

# 1 から 10 までの整数を用意する
numbers = list(range(1, 11))

# 5 つの要素を抽出して、新しいリストに追加する
random_numbers = []
for _ in range(5):
    random_number = random.choice(numbers)
    random_numbers.append(random_number)

print(random_numbers)
[5, 8, 9, 2, 3]

このコードでは、numbers リストからランダムに要素を一つずつ選択して、random_numbers リストに追加しています。random_numbers リストの要素数は、for ループの繰り返し回数で指定しています。

また、random.choice() 関数は、シーケンスまたは集合の要素をすべて同じ確率で選択するため、random_numbers リストの要素は、1 から 10 までの整数の中で均等に分布します。

以下に、random.choice() 関数を使用して、さまざまなタイプの乱数のリストを作成するサンプルコードを示します。

文字列からランダムに要素を抽出してリストにする:

  • 文字列からランダムに要素を抽出してリストにする:
import random

# アルファベットからランダムに 5 つの文字を抽出して、新しいリストに追加する
random_letters = []
for _ in range(5):
    random_letter = random.choice("abcdefghijklmnopqrstuvwxyz")
    random_letters.append(random_letter)

print(random_letters)

出力例:

['p', 'q', 'r', 's', 't']

リストからランダムに要素を抽出して新しいリストにする

  • リストからランダムに要素を抽出して新しいリストにする:
import random

# 1 から 10 までの整数からランダムに 5 つの要素を抽出して、新しいリストに追加する
random_numbers = []
for _ in range(5):
    random_number = random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    random_numbers.append(random_number)

print(random_numbers)

出力:

[8, 3, 2, 6, 7]

リストからランダムに要素を抽出して、重複を許したリストにする:

  • リストからランダムに要素を抽出して、重複を許したリストにする:
import random

# 1 から 10 までの整数からランダムに 5 つの要素を抽出して、重複を許したリストにする
random_numbers = []
for _ in range(5):
    random_number = random.choice(list(range(1, 11)))
    random_numbers.append(random_number)

print(random_numbers)

出力:

[7, 3, 9, 2, 1]