パスワードを忘れた? アカウント作成
472604 journal

quabbinの日記: FizzBuzzとrand

日記 by quabbin

BLOG「思っているよりもずっとずっと人生は短い。」今日のFizzBuzzより

http://fizzbuzz.rubyforge.org/svn/trunk/lib/fizzbuzz.rbのコード

(0..99).map {|i| srand(46308667) if (i%15).zero?; ["FizzBuzz", "Buzz", i+1, "Fizz"][rand(4)]}

よくこんな事を思いついたなぁ…。

同じ種でsrandした場合、rand()の出現数値に再現性がある事が肝と。

ただ、テストしてみると、どうもrand()の再現性は環境依存のようで、手元のruby 1.8.1(ってそんな前かい!)なLinux環境では違う値が返却されてまいます。
1.8.6-と1.9.0-0なcygwin環境では正しく動くのだけど…。
で、random.cの中身を見てみたところ、独自実装している模様。
つまるは環境依存ではなくて、バージョン依存ということか。

ちなみにRubyの乱数は、2002-07-26の変更で線形合同法っぽいアルゴリズムからメルセンヌ・ツイスターになった模様。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...