From: Tanaka Akira Date: 2007-07-11T13:26:04+09:00 Subject: [ruby-dev:31179] Re: Random In article <4694338C.7090303@sarion.co.jp>, "NAKAMURA, Hiroshi" writes: > 1. RDocコメントを書いた。rdocには通してないけど。 Ruby currently uses a modified Mersenne Twister with a period of 2**19937-1. と、ありますが、Mersenne Twister をどう modify してましたっ け? あと、Random.new のところで、引数の 0 で Random.seed を使う とありますが、実装は種が 0 になります。実装のほうが素直な挙 動でよいと思います。 > 2. Random.seedを追加した。[ruby-dev:31173]。 ありがとうございます。 > 3. Random#bytesで無駄にgenrand_int32_0を呼ばないようにした。 > [ruby-dev:31173]。 引数に非負整数以外を受け付けるようです。 % ./miniruby -e 'p Random.new.bytes(nil)' "\302&" また、同じ列から取り出している気がしない結果が出てきます。 % ./miniruby -e '10.times {|i| p Random.new(10).bytes(i) }' "" "\t" "\tE" "\tEu" "\tEu\305" "Eu\305}\234" "Eu\305}\234{" "Eu\305}\234{L" "Eu\305\234{L\344\377" "Eu\305\234{L\344\377O" > 4. Random#integerに0または負の整数を渡したらArgumentError。 Bignum の 0 を渡した場合にそうなりません。 % ./miniruby -e ' big_zero = 0x40000000.coerce(0)[0] p big_zero p Random.new(10).integer(big_zero)' 0 -982170359 > 5. Random#int追加。[ruby-dev:31173]。 ありがとうございます。 > 6. Random#integerとRandom#randは、rangeのbegin/endに非整数入れて呼ぶと > ArgumentError。都合上。 都合上というよりは、むしろそっちのほうがいいんじゃないかと思 います。新設するところは互換性の問題もありませんし。 -- [田中 哲][たなか あきら][Tanaka Akira]