x = 0 y = 1 z = 2 w = 3 generate = ->{ t = (x ^ (x << 11)) & 0xffffffff x, y, z = y, z, w w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)) } x = gets.to_i min = 2143000000 max = 2153000000 low = high = 0 a = [] 1000_0001.times{ r = generate[] if r < min low += 1 elsif r > max high += 1 else a << r end } p a.sort[500_0000-low]