aW50IHNldF9kb29yKCkKewombmJzcDsvLzDjgYsx44GLMuOCkuS5seaVsOOBp+i/lOOBmQombmJzcDtpbnQgYTsKJm5ic3A7YSA9IHJhbmQoKSAlIDM7CiZuYnNwO3JldHVybiBhOwp9CgppbnQgc2VsZWN0X2Rvb3IoaW50IGEsIGludCBiKQp7CiZuYnNwOy8vMOOBizHjgYsy44Gu44GG44Gh44CB5byV5pWwYSxi44GrCiZuYnNwOy8v5Y+X44GR5Y+W44Gj44Gm44GE44Gq44GE55Wq5Y+344KS6L+U44GZCiZuYnNwO2ludCBjOwombmJzcDtzd2l0Y2ggKGEgKiAzICsgYil7CiZuYnNwO2Nhc2UgMDogcmV0dXJuIHJhbmQgJSAyICsgMTsKJm5ic3A7Y2FzZSAxOiByZXR1cm4gMjsKJm5ic3A7Y2FzZSAyOiByZXR1cm4gMTsKJm5ic3A7Y2FzZSAzOiByZXR1cm4gMjsKJm5ic3A7Y2FzZSA0OiByZXR1cm4gcmFuZCAlIDIgKiAyOwombmJzcDtjYXNlIDU6IHJldHVybiAwOwombmJzcDtjYXNlIDY6IHJldHVybiAxOwombmJzcDtjYXNlIDc6IHJldHVybiAwOwombmJzcDtjYXNlIDg6IHJldHVybiByYW5kICUgMjsKJm5ic3A7fQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIGM7Cn0KCmludCBtYWluKCkKewombmJzcDsvL+ODouODs+ODhuOCo++9peODm+ODvOODq+WVj+mhjAombmJzcDtpbnQgeW91OyAvL+OBguOBquOBn+OBruODieOCogombmJzcDtpbnQgYW5zOyAvL+W9k+OBn+OCiuOBruODieOCogombmJzcDtpbnQgb3BuOyAvL+mWi+OBkeOCieOCjOOCi+ODieOCogombmJzcDtpbnQgY2hhbmdlID0gMTsgLy8x44Gu44Go44GN44OJ44Ki44KS5aSJ5pu044GZ44KLCiZuYnNwO2ludCBjaGsgPSAwOyAvL+ato+ino+OBruWbnuaVsAombmJzcDtpbnQgajsKJm5ic3A7aW50IG4gPSAxMDAwOyAvL+OCsuODvOODoOOBruWbnuaVsAoKJm5ic3A7Ly9TZWVkIGZvciByYW5kb20gbnVtYmVyIAombmJzcDt0aW1lX3QgdGltOwombmJzcDt0aW1lKCZhbXA7dGltKTsKJm5ic3A7c3JhbmQoKHVuc2lnbmVkKXRpbSk7CgombmJzcDtmb3IgKGogPSAwOyBqICZsdDsgbjsgaisrKXsKJm5ic3A7Jm5ic3A7eW91ID0gMDsgLy/lrabnsY3nlarlj7fkuIsx5qGB44KSM+OBp+WJsuOBo+OBn+S9meOCiuOBq+OBmeOCi+OBk+OBqAoKJm5ic3A7Jm5ic3A7cHJpbnRmKCZxdW90O1lvdXIgY2hvaXNlIGlzICVkXG4mcXVvdDssIHlvdSk7CgombmJzcDsmbmJzcDthbnMgPSBzZXRfZG9vcigpOyAvL+W9k+OBn+OCiuOBruODieOCoueVquWPtwoKJm5ic3A7Jm5ic3A7b3BuID0gc2VsZWN0X2Rvb3IoeW91LGFucyk7IC8v6ZaL44GR44KJ44KM44KL44OJ44Ki55Wq5Y+3CiZuYnNwOyZuYnNwO3ByaW50ZigmcXVvdDslZCBpcyBOT1QgYW4gYW5zd2VyXG4mcXVvdDssIG9wbik7CgombmJzcDsmbmJzcDtpZiAoY2hhbmdlID09IDEpIHsgLy/jg4njgqLjgpLlpInmm7TjgZnjgosKJm5ic3A7Jm5ic3A7Jm5ic3A7eW91ID0gc2VsZWN0X2Rvb3IoeW91LG9wbik7CiZuYnNwOyZuYnNwOyZuYnNwO3ByaW50ZigmcXVvdDtZb3VyIGNob2lzZSBpcyBjaGFuZ2VkIHRvICVkXG4mcXVvdDssIGFucyk7CiZuYnNwOyZuYnNwO30KCiZuYnNwOyZuYnNwOy8v562U44GI5ZCI44KP44GbCiZuYnNwOyZuYnNwO2lmICh5b3UgPSBhbnMpewombmJzcDsmbmJzcDsmbmJzcDtwdXRzKCZxdW90O1lvdSB3aW4hJnF1b3Q7KTsKJm5ic3A7Jm5ic3A7Jm5ic3A7Y2hrKys7CiZuYnNwOyZuYnNwO30KJm5ic3A7Jm5ic3A7ZWxzZSB7CiZuYnNwOyZuYnNwOyZuYnNwO3ByaW50ZigmcXVvdDtZb3UgbG9zZS4uLiBUaGUgYW5zd2VyIGlzICVkXG4mcXVvdDssIGFucyk7CiZuYnNwOyZuYnNwO30KJm5ic3A7Jm5ic3A7cHV0cygmcXVvdDsmcXVvdDspOwombmJzcDt9CiZuYnNwO3ByaW50ZigmcXVvdDslZC8lZCB3aW5zXG4mcXVvdDssIGNoaywgbik7CiZuYnNwOy8vMTAwMOWbnuS4rTY4OeWbnuW9k+OBn+OBo+OBnwoKJm5ic3A7cmV0dXJuIDA7Cn0=
int set_door()
{
//0か1か2を乱数で返す
int a;
a = rand() % 3;
return a;
}
int select_door(int a, int b)
{
//0か1か2のうち、引数a,bに
//受け取っていない番号を返す
int c;
switch (a * 3 + b){
case 0: return rand % 2 + 1;
case 1: return 2;
case 2: return 1;
case 3: return 2;
case 4: return rand % 2 * 2;
case 5: return 0;
case 6: return 1;
case 7: return 0;
case 8: return rand % 2;
}
return c;
}
int main()
{
//モンティ・ホール問題
int you; //あなたのドア
int ans; //当たりのドア
int opn; //開けられるドア
int change = 1; //1のときドアを変更する
int chk = 0; //正解の回数
int j;
int n = 1000; //ゲームの回数
//Seed for random number
time_t tim;
time(&tim);
srand((unsigned)tim);
for (j = 0; j < n; j++){
you = 0; //学籍番号下1桁を3で割った余りにすること
printf("Your choise is %d\n", you);
ans = set_door(); //当たりのドア番号
opn = select_door(you,ans); //開けられるドア番号
printf("%d is NOT an answer\n", opn);
if (change == 1) { //ドアを変更する
you = select_door(you,opn);
printf("Your choise is changed to %d\n", ans);
}
//答え合わせ
if (you = ans){
puts("You win!");
chk++;
}
else {
printf("You lose... The answer is %d\n", ans);
}
puts("");
}
printf("%d/%d wins\n", chk, n);
//1000回中689回当たった
return 0;
}