def random_number(seed) Random.new(seed).rand(2**32) end now = Time.now.to_i seed = now - 123 rng_output = random_number(seed) def crack_it(start_time, rng_output) seed = start_time loop do return seed if random_number(seed) == rng_output seed -= 1 end end puts "Predictable seed: #{seed}, output: #{rng_output}" puts "Cracked seed: #{crack_it(now, rng_output)}"