西@九大です。

From: matz / netlab.co.jp (Yukihiro Matsumoto)
> 全然無意味だとは思わないのですが、スクリプト言語なんだし、
> sysとかosとかまで分離するのはやりすぎな気がします。builtinに
> 入れといてくれて問題ないと思うんだけどなあ。

そう言えば、その逆を感じる事があります。

rand なんかは基本的には builtin の方がいいですが、インスタンスメソッド
でも使いたいと思う時って、よくありますよね?(あるって言ってー!)

確かに、「0-100 までの乱数」が欲しい、という時は
  rand(100)
が読み易いと思いますが、
  random_number = rand(array.size)
よりも
  random_number = array.size.rand
の方が読み易く感じませんか?。。。ませんね。(自己解決したらしい)

いや、そう言う話でなくて、「配列の中からランダムに要素を抽出したい」と
いう場合が結構多いですよね?(多いって言(略))。そんな時、
  id = rand(array.size)
  array[id]
とやるよりも、
  array.rand
と書きたい!という話です。
Array というより、Enumerable#rand ですね。

あと、「a から b まで間の乱数」なんて時にも、
  random_number = a + rand(b - a)
よりも、
  random_number = (a..b).rand
としたい気分です。新しく range を作るコストに抵抗があれば、省略可能な
第2引数で rand(a,b) でもいいです。(あ、第1引数の意味が変わるなぁ...)

という事で、
  Enumerable#rand (欲しー!)
  Range#rand (もしくは、rand(a,b))
  Integer#rand (Enum があれば不要だけど、勢い)
が欲しいです。どうでしょうか?

------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
      西 和則   ( e-mail: kazunori / swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------