>>328
1.6.6のソース見たけど、srandが返す古いseedは前回srandした時のseedみたいね。
普通にrandが呼び出された場合は一切無視して、こんな感じでどうよ?
class Random
  attr_reader :seed, :times
  
  def initialize(seed = 0)
    @seed = seed
    @times = 0
  end
  
  def next_num(max = 0)
    srand(@seed)
    @times.times do
      rand()
    end
    @times += 1
    rand(max)
  end
end
nest_numが何度も呼び出された場合、
かなりいらない処理が多くなってしまうので全然実用的ではないけどね。
繰り返し呼び出される場合は工夫するように変えてみればいいと思う。
あと、マルチスレッドなんてしたら、それこそダメダメだな…。