#include #include #include int ask_user(void) { unsigned int rn; rn = 0; if (getrandom(&rn, sizeof(unsigned int), GRND_NONBLOCK) == 1){ perror("getrandom"); exit(1); } rn = rn % 3 + 1; printf("rn = %d\n", rn); return(rn); } void set_prize_door(int *door) { printf("Select door where prize is "); if ((*door = ask_user()) == 0) exit(1); } void contestant_picks_door(int *door) { printf("Select door for contestant "); if ((*door = ask_user()) == 0) exit(1); } int main(void) { int prize_door; int door_before_switch; int win_switch = 0; int win_noswitch = 0; int number_games = 0; for(number_games = 0; number_games < 10000; number_games++){ set_prize_door(&prize_door); contestant_picks_door(&door_before_switch); if (door_before_switch == prize_door){ /* for not switching */ win_noswitch++; } else{ /* for switching */ win_switch++; } } printf("Won %d (%f%%)games where we switched\n", win_switch, (double) win_switch / (double) number_games); printf("Won %d (%f%%)games where we did not switch\n", win_noswitch, (double) win_noswitch / (double) number_games); return(0); }