Моделирование ситуации в задаче на теорию вероятности
У меня было задание написать алгоритм решения вот такой задачи: если Вадим играет с Денисом в шахматы белыми, то он выигрывает у Дениса с вероятностью 0,7. Если Вадим играет чёрными, то он выигрывает с вероятностью 0,6. Вадим и Денис играют две партии, причём во второй партии меняют цвет фигур. Найдите вероятность того, что Вадим выиграет оба раза.
Я написал следующий код:
#include <iostream>
using namespace std;
void main() {
setlocale(LC_ALL, "Russian"); // русский язык
int n = rand() % 2 + 1; // случайное 1 или 2
// 1 - начинают белые, 2 - черные
if (n == 1)
cout << "Начали с белых, вероятность " << 0.7 * 0.6 << endl;
else
cout << "Начали с черных, вероятность " << 0.6 * 0.7 << endl;
system("pause");
}
Но нужно было использовать моделирование ситуации, как мне его добавить в код?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну, самая простая именно модель (не просто перемножение 0.6 и 0.7) - вот:
default_random_engine rnd(random_device{}());
bool ok()
{
bool win[2] = {};
uniform_int_distribution<>d(0,1);
uniform_real_distribution<>r(0.0,1.0);
if (d(rnd))
{
win[0] = r(rnd) < 0.7;
win[1] = r(rnd) < 0.6;
}
else
{
win[1] = r(rnd) < 0.7;
win[0] = r(rnd) < 0.6;
}
return win[0] && win[1];
}
int main()
{
int wins = 0, total = 1000000;
for(int i = 0; i < total; ++i)
if (ok()) wins++;
cout << double(wins)/total << endl;
}
Т.е. реально моделируем, какая игра первая, какая вторая, победы в них...
Ну, а тут - результат.