#include <iostream>
#include <vector>
struct Box
{
int goldBalls;
int silverBalls;
};
int main()
{
// Коробки с шарами
std::vector<Box> boxes;
boxes.push_back({ 2, 0 });
boxes.push_back({ 1, 1 });
boxes.push_back({ 0, 2 });
// Тянем шары
const int N = 1000000;
int winCount = 0;
for (int i = 0; i < N; i++)
{
rechose:
// Выбор случайной коробки
Box box = boxes[std::rand() % boxes.size()];
// 1) Тянем первый шар из коробки, он должен оказаться золотой (другие случаи по условию не возможны)
if (box.goldBalls == 0)
{
// Не возможный случай по условию (коллапс вселенной) => выбираем коробку ещё раз
goto rechose;
}
box.goldBalls--; // вынули золотой шар
// 2) Рандомно тянем второй шар из той же коробки и увеличиваем счётчик, если он оказался золотым
winCount += std::rand() % (box.goldBalls + box.silverBalls) < box.goldBalls;
}
std::cout << "Answer = " << (double)winCount / N << "\n";
}