サイトアイコン Python Snippets

ランダムに要素をシャッフルしたり取り出したりする

リストからランダムに要素を1つとりだす

>>> import random
>>> random.choice([1, 2, 3])
2
>>> random.choice([1, 2, 3])
3

リストから重複ありでランダムに要素をn回とりだす

重複するのでサイコロをn回振るイメージ

choiceをリスト内包表記で繰り返す

>>> import random
>>> [random.choice([1, 2, 3, 4, 5, 6]) for _ in range(3)]
[3, 1, 3]

※Python3.6からはchoicesが使える

>>> import random
>>> random.choices([1, 2, 3, 4, 5, 6], k=3)
[5, 3, 3]

リストから重複なしでランダムに要素をn個取り出す

重複しないので、くじ引きをn回するイメージ

>>> import random
>>>random.sample([1,2,3,4,5,6], 3)
[3, 2, 1]

リストの要素の順序をシャッフルする

混ぜるだけなので、要素の構成は変わらない。トランプカードのシャッフルやプレイリストのランダム再生など。

>>> import random
>>> l =[1, 2, 3, 4, 5, 6]
>>> import random.shuffle(l)
>>> l
[3, 6, 4, 5, 2, 1]

シャッフルした新たなリストを返すのではなくリストそのものを変更する。シャッフルされた新たなリストを返したい場合は、前述のsampleを使ってもよい。

>>>random.sample([1,2,3,4,5,6], 6)
[3, 6, 4, 5, 2, 1]

A 以上 B以下のランダムな整数

>>> import random
>>> random.randint(1, 12)
3

0.0以上1.0未満のランダムな実数

>>> import random
>>> random.random()
0.7483361925423171
関連記事:

モバイルバージョンを終了