Найти тему
Блокнот математика

Рулетка Сильвера, или горе от ума

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

Конечно, шансы сильно в пользу Сильвера! Но сколько партий надо выбирать? Вообще, логика подсказывает, что если шансы против тебя --- лучше играть поменьше. Поставить сто дублонов за раз лучше, чем играть сто партий по одному. В первом случае шанс уйти в плюсе много больше, чем во втором. Но это другая задача...

Играть "минимум" --- две игры --- это неправильное решение. Правильное, как ни странно, другое.

Как играют в рулетку? Шарик катится по специальному колесу, разделенному на 37 равных секторов. Сектора имеют номера от 0 до 36 и покрашены попеременно в красный и черный цвета (кроме зеро). Можно ставить на сектор, на дюжину, на цвет... Ставка оплачивается пропорционально, но без учета зеро. Так, если выиграл сектор, платится 36 ставок, а если дюжина (их три), то две ставки. Цвет оплачивается один к одному.

Ясно, что как ни крути --- а зеро возьмет свое. 36 шансов за, 37 против. Игра --- против игрока и за Сильвера.

Обозначим вероятность выиграть через q < 0.5: в нашем случае q=18/37. Принцип минимального числа игр подсказывает, что лучше всего запросить две игры; в этом случае вероятность выиграть составляет q^2=0.237: ведь надо выиграть обе партии.

Сравним этот результат с серией из четырех игр; чтобы победить, надо выиграть 3 или 4 игры, вероятность этого события q^4+4pq^3 = 0.293, что уже больше, чем для двух игр --- принцип минимума нарушен!

Нарушен он потому, что четыре партии дает возможность проиграть одну партию --- первую, или вторую, или третью, или четвертую. Много вариантов!

Рассчитаем вероятность выигрыша серии из большего числа партий. Надо выиграть больше половины, применяем схему Бернулли. Вероятность выиграть n из m при вероятности одиночной победы q --- равна
C(n,m)q^n p^(m-n), где C --- число сочетаний, оно же биномиальный коэффициент.

В самом деле, в ряду из m партий надо выбрать, без повтора, позиции для побед, причем порядок роли не играет. Каждый расклад имеет одну и ту же вероятность. Число способов выбрать расклад --- это C.

Вообще же, число способов выбрать n предметов из N, если порядок роли не играет и повторяться нельзя, равен C(n,N) = N!/(n!(N-n)!), а факториал --- это произведение всех чисел от 1 до данного: 6! = 1*2*3*4*5*6 и это число перестановок данного количества предметов.

Вот однострочник, который считает вероятности:

perl -E 'sub C{my($N,$n)=@_;my$r=1;for(1..$n){$r*=($N-$_+1)/$_};return$r}$q=18/37;$p=1-$q; $M=shift; for$m(1..$M/2){$S=0;for(0..$m-1){$S+=C(2*$m,$_)*$q**(2*$m-$_)*$p**$_}say 2*$m."=>$S"}' 80

Он же, записанный как скрипт --- внизу заметки. А вот вероятности:

игр: 2 4 6 8 10 12 14 16 18 20 22
вер.: 0.237 0.293 0.319 0.334 0.344 0.351 0.356 0.36 0.363 0.365 0.367

Если поточнее, то почти одинаковые, близкие к максимальным вероятности, равные приблизительно 0.37085, соответствуют числам 36 и 38 игр. Далее вероятность медленно убывает: для 100 она 0.355, для 200 она 0.325, для 1000 --- уже 0.188.

Вот такие чудеса бывают! Спастись, играя две партии --- шансы ниже одного из четырех. А сыграть 36 партий --- уже больше, чем один из трех! Никогда не говори никогда. Иногда лучше и поиграть немного в невыгодную игру...

Вот скрипт, если интересно.

#!/usr/bin/perl
use warnings; # предупреждения
use strict; # самоограничения
use 5.10.0; # новые фишки (say)

my ($q,$p)=(18/37,19/37); # вероятности успеха и поражения
my $M = shift || 100; # число игр -- параметр командной строки

sub C{ # функция для числа сочетаний
my($N,$n) = @_; # параметры: сколько из скольки
my $r=1; # результат
for(1..$n) { # добавляем множители,
$r*=($N-$_+1)/$_ # сразу вверху и внизу.
};
return $r; # возврат значения
}

for my $m(0 .. $M/2) { # для каждого числа партий 2m;
my $S=0; # это будет вероятность победить;
for(0..$m-1) { # надо проиграть менее половины партий;
$S+= C(2*$m,$_)*$q**(2*$m-$_)*$p**$_ # схема Бернулли
}
say 2*$m."=>$S" # сложили все вероятности и доложили.
}

Запускаем так: ./script 80

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц