Закономерности рандома и статистика. Закон больших чисел.
Трудно не согласиться с тем, что перед тем, как заснуть, в нашей голове пролетают сотни мыслей о всяких разных вещах, из-за чего нам порой трудно заснуть. Со мной тоже так бывает, и в такой момент мне в голову пришла одна задача:
Есть одна функция, которая с вероятностью 70% возвращает «да», и, соответственно, с 30% — «нет». Если запускать такую функцию, к примеру, сто раз, получим ли мы 70 «да» и 30 «нет»?
Я долго ходил и думал над этим, просто из-за того, что у меня никак не было времени взять и проверить гипотезу на практике. Но сегодня я наконец-то написал программу на JavaScript...
function random70() {
if(Math.floor(Math.random() * (100 + 1)) < 70)
return true;
else
return false
}
trues = 0;
falses = 0;
for(i = 0; i < 100; i++){
if(random70())
trues++;
else
falses++;
}
Здесь определена функция random70(), которая, собственно, по условию задачи и возвращает с вероятностью 70% «да» (true), и с 30% — «нет» (false). Далее идет цикл, где мы запускаем эту функцию n раз и считаем количество ответов.
Я несколько раз запустил эту функцию и вот, что получилось:
Как видно, даже при миллионах запусках сохраняется тенденция приближенности результатов к идеальным. Δ показывает расхождение полученных результатов и идеальных, увеличивается.
Таким образом, мы не только теперь сможем спать спокойно ночью, а также посмотрели на закон больших чисел в действии.