From: Tanaka Akira Date: 2007-06-12T15:43:44+09:00 Subject: [ruby-dev:30963] Re: Random In article <466E3371.2080705@sarion.co.jp>, "NAKAMURA, Hiroshi" writes: >> rand の 4文字という短さには勝てないって... > > と言いつつありがとうございます。 勝つことはできないが相手を負かすことはできる、と考えると、 Kernel#srand 廃止とかどうでしょうね。 いますぐ、というわけじゃなくて、普通の人が使っている安定版 ruby に Random が入った後のことですが。 >> Random::MT の中については upto という名前が気になります。 >> upto(10) ならやっぱり 10 までだと思うのですが、ここでは 9 ま >> でなので名前がよろしくないと思います。すぐに思い付くメソッド >> 名としては integer があげられるでしょうか。 > > 同感。JavaではnextBoolean、nextBytes、nextFloat、nextGaussian、nextInt、 > nextLongがあります。「next」というのがpseudoな感じを表してますが、 > SecureRandomにも同じインターフェースを持たせたいと思っているので、不要で > しょう。また、boolean、gaussianは利用者いない。Longは適合せず、というこ > とで、 > > Random#integer(max) > Ramdom#bytes(size) > Random#float > > くらい? 他に現行APIからの移行先に; rand よりも integer のほうがユーザの意図を的確に表現できるの で、rand より短く、int というのもありかな。 Random#int(max_plus_one) なお、私は整数の range は悪くないと思います。 6面ダイスに対応するのが rand(1..6) って直感的ですよね。 あと、upto(0) の動作は変な気がします。 % bin/ruby -ve 'p Random::MT.new.upto(0)' ruby 1.9.0 (2007-06-10 patchlevel 0) [i686-linux] -1481029930 > floatは不要かなぁ。rand(0)と同じ仕様のつもりですが、rand()でいいじゃん、 > という気がする。 rand よりも長いのが残念ですが、意図をはっきりと表現できるの で私は好意的に思っています。 > srand()は廃止とかまずいですかね? せめて、srand()は引数を取らないようにし > たい。 Random::MT#srand はもともとないんですよ。素晴らしいことに。 -- [田中 哲][たなか あきら][Tanaka Akira]