[Tutor] Data persistence problem

Alan Gauld alan.gauld at btinternet.com
Fri Jun 21 09:06:58 CEST 2013


On 21/06/13 07:21, Arijit Ukil wrote:
> I have following random number generation function
>
> def*rand_int* ():
>      rand_num = int(math.ceil (random.random()*1000))
> returnrand_num
>
> I like to make the value of rand_num (return of rand_int) static/
> unchanged after first call even if it is called multiple times.

The simple solution is to store the value in a global variable.

rand_num = None

def rand_int():
    global rand_num
    if not rand_num:
       rand_num = int(math.ceil (random.random()*1000))
    return rand_num

Or if you really don't like globals you could create
a generator function:

def rand_int():
    rand_num = int(math.ceil (random.random()*1000))
    while True:
       yield rand_num

Incidentally, any reason why you don't use the random.randint() function 
rather than the int(ceil(...) stuff?

HTH
-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list