0
#include <stdio.h>
#include <time.h>
int main(void)
{
int games = 0;
int stayWins = 0;
int switchWins = 0;
int chosenDoor;
int remainingDoor;
int revealedDoor;
int winningDoor;
int option;
srand (time(NULL));
do
{
chosenDoor = rand() % 3 + 1;
winningDoor = rand() % 3 + 1;
do
{
revealedDoor = rand() % 3 + 1;
} while (revealedDoor == chosenDoor || revealedDoor == winningDoor);
do
{
remainingDoor = rand() % 3+1;
} while (remainingDoor == chosenDoor || remainingDoor == revealedDoor);
option = rand() % 2 + 1;
if (option == 1)
{
if (chosenDoor == winningDoor)
{
stayWins++;
}
}
if (option == 2)
{
chosenDoor = remainingDoor;
if (chosenDoor == winningDoor)
{
switchWins++;
}
}
games++;
} while (games < 10000);
printf("Out of 10,000 games, the contestant won %d times by staying with his/her original choice and won %d times by switching his/her choice.",stayWins,switchWins);
return 0;
}
傍晚的夥計, 這是一個完整的蒙蒂霍爾問題代碼,打印10000場比賽的結果。代碼將爲用戶選擇所選的門。我怎樣才能改變它,使程序將允許用戶選擇自己? 以及如何修改它,使程序不會爲程序隨機化'1'或'2'的值,而是允許我選擇切換? 我的進步...... 取而代之的是:蒙蒂霍爾遊戲:如何讓用戶選擇門而不是程序自動隨機選擇?
chosenDoor = rand() % 3 + 1;
使用此,只有可接受的輸入爲1,2或3:
printf("Choice:");
scanf("%d",&chosenDoor);
這是在正確的軌道?我知道此時用戶需要在節目「完成」之前輸入他的選擇10,000次,那麼是否有辦法將第一選擇應用於其他9,999次試驗?
神奇,謝謝冠軍。 – user1742525