From: Kazunori NISHI Date: 1999-11-30T02:28:42+09:00 Subject: [ruby-dev:8446] [REQ] {enumerable, integer, range}.rand 西@九大です。 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 ) ------------------------------------------------------------------