33,007
社区成员
发帖
与我相关
我的任务
分享
void t()
{
int player;
int emcee;
int otherchoose;// 要交换的那个
int noChooseWin = 0;
int chooseWin = 0;
int gift = 0;
int[] box = new int[3];
Random random = new Random();
for (int c = 0; c < 10000; c++)
{
gift = random.Next(3);
for (int i = 0; i < 3; i++)
{
if (gift == i)
box[i] = 1;//有礼物
else
box[i] = 0;
}
player = random.Next(3);
bool emceeIsKnown = false;
if (emceeIsKnown) // 假设主持人知道盒子的情况
{
do
{ // 主持人选的盒子
emcee = random.Next(3);
} while (emcee == gift || emcee == player);
do
{// 剩下的那个要交换的盒子
otherchoose = random.Next(3);
} while (otherchoose == player || otherchoose == emcee);
if (box[player] == 1)
{
noChooseWin++;
}
else if (box[otherchoose] == 1)
{
chooseWin++;
}
}
else // 假设主持人不知道盒子的情况
{
do
{
emcee = random.Next(3);
} while (emcee == player);
do
{
otherchoose = random.Next(3);
} while (otherchoose == player || otherchoose == emcee);
if (box[emcee] == 0) // 因为主持人打开的盒子为空,所以肯定是在这种情况下计算
{
if (box[player] == 1)
{
noChooseWin++;
}
else if (box[otherchoose] == 1)
{
chooseWin++;
}
}
}
}
Console.WriteLine("noChooseWin : chooseWin = " + noChooseWin + " : " + chooseWin);
}