-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 田中さん、詳細にありがとうございます。 ところでまつもとさん、これ、1.9に入れるつもりでやってるんですが、 まだその前提でいいですか? 例えば「srand廃止するようなのは入れない」とか あれば方向修正するので、早めに教えてください。 Tanaka Akira wrote: >> [ruby-dev:30950]の中田さんのをベースに、実装しました。MT部分は全て中田 >> patchのままで、Ruby wrapper部分だけの変更です。 > > 種を生成する Random.seed はいいアイデアだと思っていたのです > が、消えてしまって残念です。 なんか勘違いしていたようです(Random#seedと混同した)。入れましょう。 が、どこに使うのかな? 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#randに投げたんじゃ駄目っぽいですね。 Random#integer(0)と合わせてちょっと考えます。 > random_bytes で len が 4 の倍数の時には一回無駄に > genrand_int32_0 を呼んでるんじゃないでしょうか。 はい。そのくらいいいじゃん。。。と思ったんですが、系列考えると無駄に消費 しちゃ駄目か。チェックします。 まてよ、もしかして、境界合わせで余った場合、次のRandom#bytesの先頭にあふ れさせる必要ってある? prng.bytes(5); prng.float; prng.bytes(3)の場合は? > テストをちょっと眺めたんですが、test_ctor の ctor ってなんで > すか? constructorの略です。 > 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は実装してませんが、これは単に忘れただけです。どうしましょ。 > > 私は、あるといいな、と思います。 上記いろいろを実装するうちに反対がなければ、入れます。 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) iQEVAwUBRpLysh9L2jg5EEGlAQKTGgf/Yf44ADXJM2DQDulG5FiHqVocRUkM//o1 swr39Te3rHfIfqUPMxSieS7s2mYlWrh9LmN5kJgA7ybYejXPrWhlnfNoxnUQMsJF 7810l/GLhof0APw+DLwo7pee0s1Iz4D5KdDVSmcmpNY5disKqeNforJViQZA13Y8 OMpRZo1IziGBYdstCp3DdgLUU3u9MQHcx0EckqIoTIwFlXCY+KM3wQok/mEeZSTJ O7VzvPuULetAtrsuFSmGdY176OvZETZq7GWhYNFeCYXOLL1gd/2Z8eK/tcp+DTfB zppoVktQX4X2wp59JmVUyl11SDObAxv34DUTGxn3l64Zo5UGDy6EYQ== =5U6E -----END PGP SIGNATURE-----