Pythonでsample()関数の使い方
Pythonのrandomモジュールには、リスト、タプル、文字列などのシーケンスオブジェクトからランダムなサンプルを取得するためのsample()関数があります。以下は、sample()関数の基本的な使い方です。
import random
# リストから3つの要素をランダムに取得する例
my_list = [1, 2, 3, 4, 5]
sample_list = random.sample(my_list, 3)
print(sample_list) # [2, 4, 5]
# 文字列から2つの文字をランダムに取得する例
my_str = "Hello, world!"
sample_str = random.sample(my_str, 2)
print(sample_str) # ['r', 'l']
sample()関数は、第1引数に取得対象のシーケンスオブジェクトを、第2引数に取得したい要素の数を指定します。戻り値は、指定した数だけランダムな要素を含むリストです。
なお、取得したい要素の数がシーケンスオブジェクトの要素数よりも大きい場合、ValueError例外が発生します。また、シーケンスオブジェクトが空の場合はIndexError例外が発生します。
sample()関数のオプション引数について
random.sample()関数には、第3引数としてkというオプション引数を指定することができます。この引数は、第1引数のシーケンスオブジェクトからランダムに要素を取得する際のサンプルサイズを指定するために使用されます。
以下は、k引数を使用する例です。
import random
# 1から10までの数値からランダムに3つの要素を取得する例
sample_numbers = random.sample(range(1, 11), k=3)
print(sample_numbers) # [9, 5, 7]
# リストからランダムに2つの要素を取得する例(上記の例と同じ結果になる)
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sample_list = random.sample(my_list, k=3)
print(sample_list) # [9, 5, 7]
k引数を省略した場合、random.sample()関数は第1引数のシーケンスオブジェクトから1つのランダムな要素を返します。しかし、k引数を指定することで、シーケンスオブジェクトから複数のランダムな要素を取得することができます。
なお、k引数の値は、シーケンスオブジェクトの要素数よりも大きい場合、ValueError例外が発生します。