フィッシャー-イェーツのシャッフル
Fisher-Yates shuffle
効率的なシャッフルアルゴリズム
シャッフルの方法
配列から要素をランダムに選び、新しい配列に加える
ランダムに選ぶ方法をいい感じにしたい
シャッフルしたかを管理する
JavaScriptと違って要素の歯抜けができなかったあんも.icon
code:jl
function badshuffle(cards::Vector)
n = length(cards)
taken = falses(n) # 移し替えられたかの管理
copy = Vector{eltype(cards)}()
remaining = n
while remaining > 0
i = floor(Int, rand() * n) + 1
remaining -= 1
end
end
return copy
end
仕切りがあれば配列は1つでよい
code:jl
function fisher_yates!(cards::Vector)
for i in reverse(eachindex(cards))
j = rand(1:i)
cardsi, cardsj = cardsj, cardsi end
return cards
end
実際の実装?あんも.icon