配列から重複なしでn件をランダムに抽出

ruby リファレンスマニュアル FAQ 読む via 0から51の中から重複のない5つをランダムに選ぶにはどうしますか
Ruby1.8.7以上ならArray#sample(るびまになかったので「Ruby 1.8.7での新メソッド更新(Array#choice→Array#sample) - http://rubikitch.com/に移転しました」を参照)があるため、

(0..51).to_a.sample(5)

が最善です。

ちなみに、それ以前のRubyなら

class Array
  def sample n
    self.dup.sort_by{rand}[0, n] # Array#shuffleが使える環境ならそちらで
  end
end

で同じことができるようになります。

全てシャッフルして最初からn個を取得してるので無駄な計算があります。大量の要素がある配列なら、速度面を考えて要素数を調べてからのrandで抽出するほうが良いかもしれません。