シャッフル

via http://glu.ttono.us/articles/2007/03/20/snippet-shuffle-an-array

a = (1..10).to_a
>> a = (1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>> a.sort { rand(3) - 1 }
=> [6, 8, 1, 4, 5, 9, 7, 2, 3, 10]
>> a.sort { rand(3) - 1 }
=> [4, 10, 5, 8, 9, 6, 7, 2, 3, 1]

ついでに勉強のために

>> def random_pick(arr)
>>   arr = arr.sort {rand(3) - 1}
>>   return lambda {
?>     arr.size > 0 ? arr.pop : nil
>>   }
>> end
=> nil
>> a
=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>> b = random_pick(a)
=> #<Proc:0x010e8c40@(irb):54>
>> b.call
=> 8
>> b.call
=> 6