PYTHON MEBY

Pythonでリストの要素をランダムに選択(random.choice, random.sample)

この記事では、Pythonの`random.choice`と`random.sample`を使ってリストからランダムに要素を選択する方法を説明します。それぞれの関数の特徴と使い分けについて解説し、サンプルコードを通して理解を深めます。

目次

random.choice: リストから1つの要素をランダムに選択

`random.choice(seq)`関数は、シーケンス(リスト、タプルなど)からランダムに1つの要素を選択して返します。シーケンスが空の場合はエラーが発生します。

import random

my_list = [1, 2, 3, 4, 5]
random_element = random.choice(my_list)
print(f"選択された要素: {random_element}")

上記のコードは、`my_list`からランダムに1つの要素を選択し、`random_element`変数に格納して出力します。実行するたびに異なる要素が選択されます。

random.sample: リストから複数の要素をランダムに選択

`random.sample(population, k)`関数は、`population`から重複なく`k`個の要素をランダムに選択してリストとして返します。`k`が`population`の長さより大きい場合、エラーが発生します。

import random

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random_sample = random.sample(my_list, 3)
print(f"選択された要素: {random_sample}")

上記のコードは、`my_list`から重複なく3つの要素をランダムに選択し、`random_sample`変数に格納して出力します。実行するたびに異なる3つの要素の組み合わせが選択されます。

random.choiceとrandom.sampleの使い分け

リストから1つの要素を選択する場合は`random.choice`、複数の要素を重複なく選択する場合は`random.sample`を使用します。選択する要素数がリストの長さより大きい場合、`random.sample`はエラーを発生させますが、`random.choice`はエラーを発生させません。

  • 要素を重複して選択する必要がある場合は、`random.choice`をループ内で複数回使用します。
  • `random.sample`は、宝くじの抽選など、重複を許さないランダムサンプリングに適しています。
  • `random.choice`は、アンケートの回答をランダムに選択するなど、1つの要素のみを選択する必要がある場合に適しています。

サンプルコード

import random

my_list = ["apple", "banana", "cherry", "date", "fig"]

# random.choiceの使用例
chosen_fruit = random.choice(my_list)
print(f"random.choice: {chosen_fruit}")

# random.sampleの使用例
chosen_fruits = random.sample(my_list, 3)
print(f"random.sample: {chosen_fruits}")

#空のリストに対するrandom.choiceとrandom.sample
#empty_list = []
#print(random.choice(empty_list)) # IndexError: Cannot choose from an empty sequence
#print(random.sample(empty_list, 1)) # ValueError: Sample larger than population or is negative

関連記事