From: "NAKAMURA, Hiroshi" Date: 2007-06-16T11:16:03+09:00 Subject: [ruby-dev:31006] Re: Random -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tanaka Akira wrote: >>> rand の 4文字という短さには勝てないって... > 勝つことはできないが相手を負かすことはできる、と考えると、 > Kernel#srand 廃止とかどうでしょうね。 > > いますぐ、というわけじゃなくて、普通の人が使っている安定版 > ruby に Random が入った後のことですが。 >> srand()は廃止とかまずいですかね? せめて、srand()は引数を取らないようにし >> たい。 > > Random::MT#srand はもともとないんですよ。素晴らしいことに。 この辺の移行に関する議論は、認識があってるかどうか私も判断できてません。 とりあえず1.8はおいといて: Random::MT#srandがないということは、あそうか、コンストラクタでseedを指 定、なのか。すいません、今やっと、中田さんパッチをちゃんと見ました。 で、話を戻すと、globalな状態を変更可能な、関数形式のsrand(arg != 0)は、 1.9では禁止しちゃえと思ってるんですが、どうでしょうか。 > rand よりも integer のほうがユーザの意図を的確に表現できるの > で、rand より短く、int というのもありかな。 > > Random#int(max_plus_one) Random#intだと、なんとなく32bitまでしか取らないような気がしませんか。い や64bitかもしれませんが。Integerとの対応は、integerのほうがいいなぁ。 > なお、私は整数の range は悪くないと思います。 > 6面ダイスに対応するのが rand(1..6) って直感的ですよね。 西山さんも説明ありがとうございます。理解しました。さきほどruby-coreに投 げた現状案サマリ(以下にも引用します)では、IntegerのみOKということにし てみました。どうでしょう。 Random#integer(max_plus_one_or_range) Ramdom#bytes(size) Random#float # same as Random#rand(0) Random#rand(max_plus_one_or_range = 0) # only allows range with Integer begin/last # ArgumentError otherwise Random#srand(seed = nil) Random#random_seed # same as Random#srand(0) Random#seed=(seed = nil) # same as Random#srand(seed) Random#seed # returns the most recently used seed Random.rand(arg = 0) # calls Random#rand(arg) of the singleton # Random object which is initialized with # the current srand() rand(arg = 0) # calls Random.rand(arg) srand() # srand() now takes no argument for 1.9 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.1 (Cygwin) iQEVAwUBRnNHyR9L2jg5EEGlAQL+9gf8DvrC3cr36BXKuRnJzC1/TLAaKqITh1sM MzSW3AIi6oXxNm+4MRklaF+fkuFJm17UfvHiq2S7r2Ce+jTsxd/HqsZDRlzeRchI xtp/hc8MkhUsJjHeR3xKaODdcS+Nkf+L0EjLGFNG6Py3G3T6CYGjlkjdG+J3pKg4 mma+AlwcHznNUctVWVJ/GczJ40Y028K6mxLKScDAZgVCDqXoUFgj3sfCuJMT1QJN LafjFIiBxyssoAVnu/iGfIA22mXfST4p16VjtxowS2/pEMU9BMZ8KIH4fMmZPc8s kjJ5jJ3vB5xLIX3/uDOfg8CwoQ5Vpblnhm4az9QFZbgfxMcD4CSSTA== =FpSB -----END PGP SIGNATURE-----