池田孝志です。

srandがunsigned intの範囲でしか値が取れませんでした。

% ruby -e 'srand(2**32)'
/tmp/rba23377:1:in `srand': bignum too big to convert into `uint' (ArgumentError)

やはり、NUM2UINTを呼び出すだけなのは仕様なのでしょうか。

今のところ、

uint_ceil = 2**([0].pack("I").size * 8)
while seed >= uint_ceil
  seed = (seed % uint_ceil) + (seed / uint_ceil)
end
srand(seed)

としてしのいでいるまでです。

今思ったのですが、srandに負の数を与えてはいけませんか?
それと、

irb(main):001:0> srand(2**32-1)
0
irb(main):002:0> srand(2**32-1)
-1

と、種を保存する型がintです。

あと、[ruby-dev:2492]は推奨、というだけに終っているのでしょ
うか。便利だとは思いますが、使うまでには至っていないので…

-- 
池田 孝志  cercine / kcn.ne.jp