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;
}

こんばんは、これは、10,000 ゲームの結果を出力する完成したモンティ ホール問題コードです。コードは、ユーザーが選択したドアを選択します。プログラムでユーザーが自分で選択できるようにするにはどうすれば変更できますか? 同様に、プログラムがプログラムの「1」または「2」の値をランダム化せず、代わりに切り替えのオプションを作成できるように変更するにはどうすればよいですか? 私の進歩...これの代わりに:

chosenDoor = rand() % 3 + 1;

許容される入力のみが 1、2、または 3 である場合に、これを使用します。

printf("Choice:");
scanf("%d",&chosenDoor);

これは正しい軌道ですか?この時点で、プログラムが「終了」する前に、ユーザーが自分の選択を 10,000 回入力する必要があることを認識しています。最初の選択を他の 9,999 回の試行に適用する方法はありますか?

4

1 に答える 1

1

最初の選択肢を他の 9,999 回の試行に適用する方法はありますか?

移動

printf("Choice: ");
scanf("%d", &chosenDoor);

ループ外のコードの一部。

于 2012-10-28T21:56:30.493 に答える