Python
Проверка распределения генератора псевдослучайных чисел
Компьютер не умеет генерировать по-настоящему случайные числа, поскольку в компьютере все определено очень четко. Однако существуют специальные алгоритмы, которые позволяют генерировать числа, похожие на случайные. По логике вещей генератор случайных чисел должен генерировать числа в соответствии с равномерным распределением. То есть, например, если бы мы подбрасывали монету, то выпадение орла или решки было бы примерно одинаковое количество раз, при достижении статистически значимого результата. Проверим, как работает генератор псевдослучайных чисел random.randint() в Python. Нужно написать программу, которая сгенерирует много случайных чисел от 0 до 99. При этом мы будем разделять их на 10 групп: 0-9, 10-19, 20-29 и так далее. Необходимо вывести, какое количество чисел будет принадлежать каждой группе.
Пример вывода:
Number of samples: 100000
Group 0 9: 9916
Group 10 - 19: 9930
Group 20 - 29: 10070
Group 30 - 39: 10024
Group 40 - 49: 9983
Group 50 - 59: 10036
Group 60 - 69: 10083
Group 70 - 79: 10066
Group 80 - 89: 9902
Group 90 - 99: 9990
Answers & Comments
Ответ:
from random import randint
numberOfSamples = 100000
groups = {'0 - 9': 0, '10 - 19': 0, '20 - 29': 0, '30 - 39': 0, '40 - 49': 0, '50 - 59': 0, '60 - 69': 0, '70 - 79': 0, '80 - 89': 0, '90 - 99': 0}
for i in range(numberOfSamples):
number = randint(0, 99)
if number < 10:
groups['0 - 9'] += 1
elif number < 20:
groups['10 - 19'] += 1
elif number < 30:
groups['20 - 29'] += 1
elif number < 40:
groups['30 - 39'] += 1
elif number < 50:
groups['40 - 49'] += 1
elif number < 60:
groups['50 - 59'] += 1
elif number < 70:
groups['60 - 69'] += 1
elif number < 80:
groups['70 - 79'] += 1
elif number < 90:
groups['80 - 89'] += 1
else:
groups['90 - 99'] += 1
print(f'Number of samples: {numberOfSamples}')
for key, value in groups.items():
print(f'Group {key}: {value}')