Блог о жизни и технологиях

Закономерности рандома и статистика. Закон больших чисел.

Трудно не согласиться с тем, что перед тем, как заснуть, в нашей голове пролетают сотни мыслей о всяких разных вещах, из-за чего нам порой трудно заснуть. Со мной тоже так бывает, и в такой момент мне в голову пришла одна задача:

Есть одна функция, которая с вероятностью 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 раз и считаем количество ответов.

Я несколько раз запустил эту функцию и вот, что получилось:

Как видно, даже при миллионах запусках сохраняется тенденция приближенности результатов к идеальным. Δ показывает расхождение полученных результатов и идеальных, увеличивается.

Таким образом, мы не только теперь сможем спать спокойно ночью, а также посмотрели на закон больших чисел в действии.