# File lib/openid/util.rb, line 208 def Util.rand(max) unless Util::HAS_URANDOM return Kernel::rand(max) end start = 0 stop = max step = 1 r = ((stop-start)/step).to_i # figure out how many bytes we need rbytes = Util::num_to_str(r) nbytes = rbytes.length nbytes -= 1 if rbytes[0].chr == "\000" bytes = "\000" + Util::get_random_bytes(nbytes) n = Util::str_to_num(bytes) return start + (n % r) * step end