近藤です

> 配列からランダムに要素を取り出したい場合には
> 
> a = (1..5).to_a
> a.delete_at(rand(a.size)) #=> 3
> p a #=> [1, 2, 4, 5]
> 
> などと書く必要がありましたが、

a = (1..5).to_a.shuffle.each
a.next #=> 3

> 引数を指定した場合は、その数だけレシーバから要素を取り除き、新たな配列に取り除いた要素を入れて返します。
> 
> a = (1..10).to_a
> p a.sample!(5) #=> [5, 4, 2, 6, 7]
> p a #=> [1, 3, 8, 9, 10]


a = (1..10).to_a.shuffle.each
a.take(3) #=> [5, 4, 2, 6, 7]

Enumeratorを使ったほうが直感的だと思います。

---
Mitsuhiro Kondo
miche / mac.com