random.randint (1, n) в Python

Большинство из нас знает что команда random.randint(1,n) в Python (2. X.X), генерировал бы число в случайном (псевдослучайном) между 1 и n. Я интересуюсь знанием, каков верхний предел для n?

9
задан Arkapravo 8 April 2010 в 03:41
поделиться

2 ответа

randint () работает с длинными целыми числами, поэтому верхнего предела нет:

>>> random.randint(1,123456789012345678901234567890)
113144971884331658209492153398L
12
ответ дан 4 December 2019 в 13:46
поделиться

Несомненно, у вас ограниченный объем памяти и адресного пространства на вашем компьютере; например, для хорошей 64-битной машины 64 ГБ ОЗУ [[около 2 ** 36 байт]] и пара ТБ диска (можно использовать как пространство подкачки для виртуальной памяти) [[около 2 ** 41 байт]]. Таким образом, «верхняя граница» длинного целого числа Python будет наибольшим из представимых в доступной памяти - немного меньше, чем 256 ** (2 ** 40) , если вы находитесь в абсолютно не торопитесь и можете поменять местами как сумасшедшие, немного больше, чем 256 ** (2 * 36) (с небольшой заменой, но не слишком ) в практическом плане .

К сожалению, для представления этих невероятно огромных чисел в десятичной системе потребуется довольно много времени и , поэтому вместо того, чтобы показывать их, позвольте мне спросить вас - зачем вам вообще заботитесь о такой нелепой последовательности цифр, которая составляет «верхнюю границу», о которой вы спрашиваете? Я думаю, что практичнее сформулировать это так: особенно на 64-битной машине с приличным объемом ОЗУ и диска верхние границы длинных целых чисел намного больше, чем все, что вы когда-либо вычислили. Технически математик настаивает, что они не бесконечность, конечно ... но практически они могут быть такими же! -)

3
ответ дан 4 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: