ruby-reference-manual:3546
From: kouyataifu4 <kouyataifu4@g...>
Date: Sun, 17 Feb 2013 10:16:57 +0900
Subject: [ruby-reference-manual:3546] Re: [るりまプロジェクト - Bug #7863][Open] 組み込みライブラリの Random.new のサンプルコードの Random#integer で NoMethodError
kouyaです。 2013年2月16日 20:30 myokoym (Masafumi Yokoyama) <redmine@r...>: > > ---------------------------------------- > Bug #7863: 組み込みライブラリの Random.new のサンプルコードの Random#integer で NoMethodError > Random.new のサンプルコードで Random#integer が使われているのですが、 > ruby-1.9.3-p385で動かしてみたところ NoMethodError が発生しました。 > > おそらく Random#rand が正しいと思いますので、パッチを添付します。 > パッチありがとうございます。サンプルコードの動作実行を忘れてたのかもしれません。 > 調べてみたら、ruby-1.9.3-p125のソースコードの中に、 /* * call-seq: Random.new([seed]) -> prng * * Creates new Mersenne Twister based pseudorandom number generator with * seed. When the argument seed is omitted, the generator is initialized * with Random.new_seed. * * The argument seed is used to ensure repeatable sequences of random numbers * between different runs of the program. * * prng = Random.new(1234) * [ prng.rand, prng.rand ] #=> [0.191519450378892, 0.622108771039832] * [ prng.integer(10), prng.integer(1000) ] #=> [4, 664] * prng = Random.new(1234) * [ prng.rand, prng.rand ] #=> [0.191519450378892, 0.622108771039832] */ と書いてあり、これをコピペした事が原因なのかもしれません。 確認したところ、最新版のruby-trunkでは本記載が消えているようです。 > ただ、Random.newのサンプルコードにこの行がある意図がよくわかりませんでした。 > 「種が同じなら同じ乱数列を発生することができる。」の例であれば、同じ行を後ろにも追加するべきだと思います。 > もしくは、引数を取らない Random#rand のみで十分と考えて、この行は削除してもよいのかなと思いました。 > 同意します。というわけで同じ行を追加する方向にしたいと思います。 > > # 参考までに、私の環境では引数を取らない Random#rand の結果がサンプルよりも1桁多く表示されました。 > #=> [0.1915194503788923, 0.6221087710398319] > > 私も1桁多かったです。 ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0] -- kouya -- ML: ruby-reference-manual@m... 使い方: http://QuickML.com/
3545 2013-02-16 12:30 [redmine@r... ] [るりまプロジェクト - Bug #7863][Open] 組み込みライブラリの Random.new のサンプルコードの Random#integer で NoMethodError -> 3546 2013-02-17 02:16 ┣[kouyataifu4@g... ] 3547 2013-02-17 05:00 ┗[redmine@r... ] [るりまプロジェクト - Bug #7863][Closed] 組み込みライブラリの Random.new のサンプルコードの Random#integer で NoMethodError