random.randint (1, n) в Python - PullRequest
       21

random.randint (1, n) в Python

9 голосов
/ 08 апреля 2010

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

Ответы [ 2 ]

11 голосов
/ 08 апреля 2010

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

>>> random.randint(1,123456789012345678901234567890)
113144971884331658209492153398L
3 голосов
/ 08 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...