Пусть у нас есть кубик, который с равной долей вероятности выпадает на числа 1,2,3,4,5,6. Такой кубик в Python выполняет функция randint из модуля random; можно записывать случайно сгенерированное значение в переменную:

import random
a = random.randint(1, 6)  

Мы конечно считаем, что каждая сторона кубика выпадает с равной долей вероятностей, то есть с вероятностями Получается, условие “1 или 2” удовлетворяется в 2 случаях из 6, и вероятность условия уже Но что значит это число? Оно значит, что если кубик кидать достаточно долго, и записывать сколько раз условие “1 или 2” выполнилось и не выполнилось, то процент выполнения условия будет стремиться к Примерно это называется “законом больших чисел”. Посмотрим его на примере Python-овского “кубика”.

На каждом из 1000 бросков кубика посчитайте “реальную вероятность” где количество выпавших “1” на кубике, количество “2”, а сколько раз вы уже “кинули кубик”. То есть, для цикла for, просто итеративная переменная. Такие посчитанные вероятности запишите в 1 массив а затем отобразите на графике. Обратите внимание, на одном графике выводится 2-я горизонтальная линия от до

import matplotlib.pyplot as plt
plt.plot(P)
plt.plot([0, 1000], [1/3, 1/3])
plt.show()

Анализируйте, как “реальная вероятность” приближается к теоретической. Запустите программу несколько раз, из раза в раз график будет другим.

(дополнительно): Найдите первую итерацию на которой “реальная вероятность” впервые приблизилась к теоретической с точностью до ошибки Отобразите точку на графике (до plt.show()!):

plt.scatter(j, P[j], c="k")

Числа перестали отличаться от после достижения такого условия (справа от точки)? Насколько условие является хорошим критерий остановки цикла? А если число уменьшить? Если бы мы имели дело с неизвестной теоретической вероятностью, сколько бросков кубика вы бы сделали, чтобы уверенно сказать, что близка к теоретической оценке с точностью ?