When researching for this question and reading the sourcecode in random.py
, I started wondering whether randrange
and randint
really behave as "advertised". I am very much inclined to believe so, but the way I read it, randrange
is essentially implemented as
start + int(random.random()*(stop-start))
(assuming integer values for start
and stop
), so randrange(1, 10)
should return a random number between 1 and 9.
randint(start, stop)
is calling randrange(start, stop+1)
, thereby returning a number between 1 and 10.
My question is now:
If random()
were ever to return 1.0
, then randint(1,10)
would return 11
, wouldn't it?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…