まつもと ゆきひろです

In message "[ruby-dev:8476] Re: [REQ] {enumerable, integer, range}.rand"
    on 99/12/01, Kazunori NISHI <kazunori / swlab.csce.kyushu-u.ac.jp> writes:

|はい、そうです。randomize/shuffle はどうでもいいです(失礼)。ていうか、
|どの程度の randomize にするかが難しそうなので。

そういうのはありますね。

|これなんですが、私は「それなりに利用価値があって、機能と名前が一致した
|メソッドは、できるだけ組み込みで定義して欲しい」派です。

私もそんなに違いません(と思います)。

|逆に、まつもとさんは「組み込みの定義は少ない方がよい」と考えられ
|ている気がするのですが、もしそうであれば、その理由は何なのでしょうか?

というのは多分誤解です。ただ、私は

  * 今回rand/randomという名前が適切だと思ってない(機能と名前
    が一致していると思わない)

  * 自分が十分納得してない名前のメソッドを導入すると後でいろ
    いろもめたり、悩んだりする

という理由からやや保守的になりがちなのですよ。

|%w(説得できる? 説得できない? 無理っぽい?).random
|
|と書きたい衝動にかられないでしょうか?それとも、あくまでも、毎回定義す
|る、もしくは一度テンポラリ変数の配列を用意して、size を添字にして、、、

名前がすべての障害です。:-)

|> rand(Numeric/Range)はともかく、rand(Enumerable)ってどんな挙
|> 動をするんですか?
|
|これは先程述べた「Set と誤解」があるので、正しくは rand(Array) の事で、
|「その要素の中からランダムに1つの要素を取り出す」を意図していました。
|
|ていうか、「rand」=「ランダムに生成する」もひょっとして思い込みですか?
|こう思っていたので、rand(Array)/Array#rand も共に自然だったのですが。

現状のrand(max)は「maxまでの範囲内の乱数を発生する」という以
上の意味を持ってません。引数や戻り値の意味を変更するならば、
それはそれで良いのですが、それならば統一的な意味が必要だと思
います。

                                まつもと ゆきひろ /:|)