RosettaCodeData/Task/Knuth-shuffle/Ruby/knuth-shuffle-1.rb

22 lines
329 B
Ruby

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]}"}