32 lines
1.1 KiB
C++
32 lines
1.1 KiB
C++
|
#include <iostream>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <math.h>
|
|||
|
|
|||
|
using namespace std;
|
|||
|
|
|||
|
const int NEXPER = 10000;
|
|||
|
|
|||
|
int main(void) {
|
|||
|
srand(time(0));
|
|||
|
|
|||
|
int M = 0, N = 0;
|
|||
|
// Повторяем эксперимент NEXPER раз
|
|||
|
for (N = 0; N < NEXPER; N++) {
|
|||
|
// за одной из 3-х досок автомобиль
|
|||
|
int WonDesk = rand()%3 + 1; // 1,2 или 3
|
|||
|
// мы указываем на доску №1,
|
|||
|
// после чего ведущий открывает 1-ну из досок
|
|||
|
int OdnaIsDosok = rand()%2 + 2; // 2 или 3
|
|||
|
if (OdnaIsDosok == WonDesk) { // если за ней автомобиль, то он должен однозначно открыть не эту
|
|||
|
OdnaIsDosok = OdnaIsDosok==2 ? 3 : 2;
|
|||
|
}
|
|||
|
// мы изменяем выбор и подсчитываем вероятность
|
|||
|
if (WonDesk != 1) M++; // если автомобиль не за 1-ой доской, то при изменении выбора едем домой на 4-х =)
|
|||
|
}
|
|||
|
|
|||
|
cout << "p = " << (double(M)/double(N)) << endl;
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|