# 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