Pythonのrandomモジュールは、擬似乱数を生成するためのモジュールです。このモジュールを使用することで、ランダムな数値、文字列、リストなどを生成することができます。
random.shuffleとrandom.sampleの違い
randomモジュールには、ランダムにリストをシャッフルするrandom.shuffle()と、指定したサイズのランダムなサブセットを選択するrandom.sample()という2つの関数があります。
random.shuffle()は、リストをランダムに並び替えます。一方、random.sample()は、リストの中から指定したサイズのランダムなサブセットを選択し、そのリストを返します。
random.shuffleを使用したリストのシャッフル方法
random.shuffle()を使用することで、リストをランダムにシャッフルすることができます。以下は、random.shuffle()を使用したリストのシャッフル方法です。
import random my_list = [1, 2, 3, 4, 5] random.shuffle(my_list) print(my_list)
このコードを実行すると、my_listの要素がランダムに並び替えられます。
固定シードを使用したrandom.shuffleの挙動
random.shuffle()は、デフォルトではランダムなシード値を使用してリストをシャッフルします。しかし、同じシード値を使用することで、同じ結果を得ることができます。
以下は、固定シードを使用したrandom.shuffle()のコード例です。
import random my_list = [1, 2, 3, 4, 5] random.seed(0) # 固定シードを使用 random.shuffle(my_list) print(my_list)
このコードを実行すると、my_listの要素が固定されたランダムな順序で並び替えられます。
random.shuffleのインプレースな操作とその利点
random.shuffle()は、リストをインプレースでシャッフルするため、新しいリストを作成する必要がありません。これにより、メモリ使用量が削減されます。
以下は、random.shuffle()をインプレースで使用した例です。
import random my_list = [1, 2, 3, 4, 5] random.shuffle(my_list) print(my_list)
このコードを実行すると、my_listの要素がランダムに並び替えられます。
random.shuffleを非インプレースに使う方法
random.shuffle()をインプレースでなく使用する場合は、copy()関数を使用してリストをコピーし、コピーしたリストをシャッフルします。
以下は、random.shuffle()を非インプレースで使用した例です。
import random my_list = [1, 2, 3, 4, 5] new_list = my_list.copy() random.shuffle(new_list) print(new_list)
このコードを実行すると、new_listの要素がランダムに並び替えられます。
まとめ
Pythonのrandomモジュールには、ランダムなリストをシャッフルするrandom.shuffle()と、指定したサイズのランダムなサブセットを選択するrandom.sample()という2つの関数があります。random.shuffle()は、リストをランダムにシャッフルすることができ、固定シードを使用することで同じ結果を得ることもできます。random.shuffle()は、インプレースでリストをシャッフルするため、メモリ使用量を削減することができます。