0から51の中から重複のない5つをランダムに選ぶにはどうしますか

30分プログラム、その526。0から51の中から重複のない5つをランダムに選ぶにはどうしますか - うんたらかんたらRuby - Rubyistをやってみる。
自分で配列をランダムに入れ替える関数を書いていたら、Gauche Users’ Reference: Topにshuffle関数を見つけた。これがあれば瞬殺ですね。

使い方

gosh>(choice 10 (iota 51))
(19 44 12 5 38 21 41 50 47 45)

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-
;;
;; random-choice.scm -
;;
;; Copyright(C) 2009 by mzp
;; Author: MIZUNO Hiroki / mzpppp at gmail dot com
;; http://howdyworld.org
;;
;; Timestamp: 2009/02/12 07:04:02
;;
;; This program is free software; you can redistribute it and/or
;; modify it under MIT Lincence.
;;

(use gauche.sequence)
(use srfi-1)
(define (choice n xs)
  (take (shuffle xs) 3))