'getrandbits(k) -> x.  Generates a long int with k random bits.'

def getrandbits(self, k):

    if (k <= 0):
        raise ValueError('number    of    bits    must    be    greater    than    zero')
    if (k != int(k)):
        raise TypeError('number    of    bits    should    be    an    integer')
    bytes = ((k + 7) // 8)
    x = long(_hexlify(_urandom(bytes)), 16)
    return (x >> ((bytes * 8) - k))
