Является ли random.randint() в Python действительно случайным?

Поэтому я использовал случайный модуль в Python с некоторыми циклами и печатал партию чисел, чтобы проверить, на что они похожи. Я заметил, что когда я ввожу:

random.randint(0,100000)

большая часть чисел будет шестизначными цифрами с несколькими пятью цифрами и меньше в 4. Всего было всего лишь одно число. Это заставляет меня задаться вопросом, насколько случайным является rand.int.

2 ответа

Между 0 и 100000, 90% номеров имеют 5 цифр! Только 0,01% имеют 1 цифру. Поэтому поведение - это то, чего я ожидаю. EDIT: И обратите внимание на то, что говорит иакио. Цифры определенно не "по-настоящему" случайны, поскольку для этого потребуется какое-то квантовое событие. Это "псевдо" случайные числа.


Чтобы расширить ответ на ooga, от 0 до 100 000, есть:

  • 10 однозначных номеров (0-9)
  • 90 двухзначных номеров (10-99)
  • 900 трехзначных номеров (100-999)
  • 9000 четырехзначных номеров (1000-9999)
  • 90000 пятизначных номеров (10 000-99 999)

Вот почему вы ожидаете 90-процентную вероятность случайного числа, имеющего пять цифр, 9% -ный шанс на четыре цифры, вероятность 9% на три цифры и так далее. Другой способ взглянуть на это - подумать о любом положительном числе с менее чем пятью цифрами, имеющими 0 в десятитысячном месте (например, 07,734), так что число в пять раз больше, чем девять, нулевые возможности для десяти тысяч мест.

(Кроме того, я предполагаю, что вы имели в виду, что вы получаете в основном пятизначные числа или диапазон увеличился до 1 000 000, поскольку не должно быть шестизначных чисел от 0 до 100 000.)

licensed under cc by-sa 3.0 with attribution.