From: Tanaka Akira Date: 2007-07-10T11:31:57+09:00 Subject: [ruby-dev:31173] Re: Random In article <469253E9.9010203@sarion.co.jp>, "NAKAMURA, Hiroshi" writes: > [ruby-dev:30950]の中田さんのをベースに、実装しました。MT部分は全て中田 > patchのままで、Ruby wrapper部分だけの変更です。 種を生成する Random.seed はいいアイデアだと思っていたのです が、消えてしまって残念です。 Random.new.integer(0) はあいかわらず怪しいようです。 おそらく、ArgumentError が適切でしょう。 % ./ruby -e 'p Random.new.integer(0)' 1863464992 また、Random#integer が引数として整数とその range 以外を受け 付けるのはなんか変な気がします。 % ./ruby -e 'p Random.new.integer(2.3)' 1 ./ruby -e 'p Random.new.integer("0")' 0.00358331439046145 random_bytes で len が 4 の倍数の時には一回無駄に genrand_int32_0 を呼んでるんじゃないでしょうか。 テストをちょっと眺めたんですが、test_ctor の ctor ってなんで すか? ILP32 マシンで Random オブジェクトを marshal して、LP64 マシ ンで unmarshal すると、以降に発生する乱数列が違います。 ilp32% ./ruby -e 'r = Random.new(10); open("z", "w") {|f| Marshal.dump(r, f) }; p r.rand' 0.771320643266746 ilp32% scp z.rm lp64: lp64% ./ruby -e 'r = Marshal.load(ARGF); p r.rand' ~/z.rm 0.921905138015851 unsinged long な seed に VALUE を入れていますが、LLP64 をサ ポートすることになった昨今においては修正の必要があるのではな いでしょうか。 > Random#intは実装してませんが、これは単に忘れただけです。どうしましょ。 私は、あるといいな、と思います。 -- [田中 哲][たなか あきら][Tanaka Akira]