В документах говорится, что uniform(a, b)
генерирует число в [a, b] 1 , но это похоже на ошибку документации, поскольку source показывает, что он полагается на random()
, который, согласно документам, возвращает [0.0, 1.0) 2 .
Если у вас должен быть [a, b], то вы можетепопробуйте сгенерировать этот диапазон из целого числа:
random.inclusive_uniform = lambda a, b:
random.randint(0, 0xFFFFFFFF) / float(0xFFFFFFFF) * (b - a) + a
Я говорю «попробуйте» сгенерировать этот диапазон, потому что когда границы не могут быть точно представлены (ни 0,8, ни 0,9 не могут быть точно представлены в IEEE-754), тогдадиапазон на самом деле [a ', b'], где a 'и b' - все, к чему округляются a и b.Обратите внимание, что это может быть даже больше, чем диапазон [a, b], поэтому будьте осторожны!
1 В частности, он говорит, что возвращаемое значение N
ограничено a <= N <= b
.
2 В комментарии в источнике, однако, есть утверждение, что оно никогда не может быть 0,0, поэтому я предполагаю, что диапазон на самом деле (0,0,1,0).