From: "NARUSE, Yui" Date: 2011-04-24T19:27:27+09:00 Subject: [ruby-list:48012] Re: randの挙動 (2011/04/24 19:15), KOSAKI Motohiro wrote: > 2011年4月24日19:07 NARUSE, Yui : >> (2011/04/24 19:01), YAGUCHI Yuya wrote: >>> 矢口と申します >>> >>> Kernel.#rand, Random.randとRandom#randで >>> Rangeオブジェクトを引数に呼び出したときの挙動が異なるのですが >>> なぜこのような挙動になっているのでしょうか? >> >> Kernel#rand と Random.rand は同じ物ですが、 >> Random#rand は別物だからです。 > > そりゃ、実装の説明にしかなってないような。 > Random.rand 削るとか Kernel#randがrange受け取れりゃ対称性が増すのに > しないのはなぜですか。という次の質問が来るに100ガバス 実装というか、同じ物か別のものかは Ruby 仕様のレイヤーですかね。 あと、「削るとか」は Random.rand じゃなくて Random#rand でしょう。 で、Random#rand が別物なのは当該 Random オブジェクトの中にある乱数生成器を用いて 生成しているためで、当然仕様的にも実装的にも別物になります。 さておき、Range の受容に関する違いにはおそらく特に理由は無いので、 Kernel#rand も Range を受け取るようにして欲しい、 などという要望を出すのもいいんじゃないでしょうか。 -- NARUSE, Yui