Q F

Q F

  • NA
  • 5
  • 5.9k

Monty Hall Problem, I am not getting the right output, any suggestions on what I am doing wrong?

Oct 4 2012 2:21 PM

/*Run a loop 100,000 times that:

  • Randomly picks a door that is the "prize door"
  • Randomly picks a door that is the "first choice"
  • Removes one of the doors that is both not the "prize door" nor the "first choice"
  • Randomly picks one of the remaining doors as your "second choice"
  • Compares the "prize door" to the "first choice" and "second choice" and saves it

*/

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    srand(time(NULL));//seed random
    int const COUNTER = 100000; //set counter
    int first_choice;
    int second_choice;
    int prize_door;
    int remove_door;
    int WinStayCounter;
    int WinSwitchCounter;
    int trials;
 
    cout << " Number of Times Staying Was the Correct Strategy: "
    << WinStayCounter << endl;
    cout << " Number of Times Switching was the Correct Strategy: "
    << WinSwitchCounter << endl;
   
    if (WinStayCounter > WinSwitchCounter)
        cout << "Therefore, the best thing to do is to Stay" << endl;
    else
 cout << "Therefore, the best thing to do is to Switch" << endl;
 
    for(int t= 0; t< 1000000; ++t)
    {
        //intialize random prize door in for loop
        int prize_door =(1 + rand()% 3);
        //intialize random first choice in for loop
        int first_choice =(1 + rand()% 3);
        int WinStayCounter = 0; //intialize counter in for loop
        int WinSwitchCounter = 0;
        int remove_door = (1+rand()% 3);       

        //remove door
        do
        {
            remove_door = 0;
        }
        while (remove_door != prize_door || remove_door != first_choice);
       
        //randomize remove door again
        do
        {
            remove_door == (1 + rand()% 3);
        }
        while (remove_door == prize_door || remove_door == first_choice);
          
        do
        {
            second_choice =(1+ rand()% 3);
        }
        while(second_choice == remove_door || second_choice == first_choice);
            
        do
        {
            ++WinSwitchCounter;
        }
        while(second_choice == prize_door);//increment switch counter   
           
    }

return 0;
}


Answers (1)