This is a bianary random number guesser that is the most efficent one you can have that I know of.
In [1]:
from random import randrange
from math import log
In [2]:
n = 10**90
In [3]:
p = randrange(10**90)
In [4]:
i = 0
heigh = n
low = 0
guess = n/2
max_steps = log(n,2) #log base 2
while guess != p:
if p < guess:
heigh = guess
guess = (low+heigh)/2
if p > guess:
low = guess
guess = (low+heigh)/2
if i > max_steps:
break
i += 1
print guess-p, i
You can prove that the max number of steps for a number n is log2(n) for this number thats 300
In [ ]: