From: "NAKAMURA, Hiroshi" Date: 2007-07-11T10:34:37+09:00 Subject: [ruby-dev:31178] Re: Random -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 NAKAMURA, Hiroshi wrote: > 田中さん、詳細にありがとうございます。 > > ところでまつもとさん、これ、1.9に入れるつもりでやってるんですが、 > まだその前提でいいですか? 例えば「srand廃止するようなのは入れない」とか > あれば方向修正するので、早めに教えてください。 修正しました。 http://dev.ctor.org/download/random_20070711.tar.gz 88aaac844b37bde6494ce6ed1dbf1339f8cbb468 random_20070711.tar.gz 1. RDocコメントを書いた。rdocには通してないけど。 2. Random.seedを追加した。[ruby-dev:31173]。 3. Random#bytesで無駄にgenrand_int32_0を呼ばないようにした。 [ruby-dev:31173]。 4. Random#integerに0または負の整数を渡したらArgumentError。 Random#randは以前のまま。[ruby-dev:31173]+α。 5. Random#int追加。[ruby-dev:31173]。 6. Random#integerとRandom#randは、rangeのbegin/endに非整数入れて呼ぶと ArgumentError。都合上。 残りはこれ↓。 >> 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 をサ >> ポートすることになった昨今においては修正の必要があるのではな >> いでしょうか。 > > 中田さーん。 どうしよ。 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) iQEVAwUBRpQzix9L2jg5EEGlAQLwKAf+PzL2wwLr+p3ohKlKkmPqgX/VSeVzyoR7 Ff1lHEWoH2z+WzgmXENcafRj3uYuoTI58ECKHz4gfMTaw7YQp03qNMHmkCUHHhin ONSdp4oTYzVbRp59LuY6J7qGe876/vTKDhmCEBs9aREB9cWMS1o1kfRRRcIjxXyr YvhzhZvoVwFcqJ+fXc8EsCQowLXD7DwussIe762Xi8Z30Ef0QN2wOzy8TZaL/X9I /8uwCzpNrZkZsxt8RHn0vng60oxLB2x1W28iZPep0drWz1h4A11ZZdPxLEfDMGLc E6Q0kW4M7CTVD15eVv2Z20WYzCGrEFJNKLZ5wSPFhSJaOt+Qc5TwFg== =0BeL -----END PGP SIGNATURE-----