|
class Array
|
|
def knuth_shuffle!
|
|
j = length
|
|
i = 0
|
|
while j > 1
|
|
r = i + rand(j)
|
|
self[i], self[r] = self[r], self[i]
|
|
i += 1
|
|
j -= 1
|
|
end
|
|
self
|
|
end
|
|
end
|
|
|
|
r = Hash.new(0)
|
|
100_000.times do |i|
|
|
a = [1,2,3].knuth_shuffle!
|
|
r[a] += 1
|
|
end
|
|
|
|
r.keys.sort.each {|a| puts "#{a.inspect} => #{r[a]}"}
|