Fisher–Yatesアルゴリズム
Fisher–Yatesアルゴリズム
O(n)
シャッフルした値が再度シャッフルされない
Pythonによる実装
The algorithmを少し見たら実装が間違っていることに気づいた(シャッフルした値が再度シャッフルされてしまう)
code:py
import random
def fisher_yates_shuffle(collection):
for i in range(len(collection)):
j = random.randint(i, len(collection) - 1)
collectioni, collectionj = collectionj, collectioni return collection