Question

C++ Code: Suppose there is a game with two options: A and B. Each of these...

C++ Code:

Suppose there is a game with two options: A and B. Each of these options adds a different amount of points from a range of numbers. You start with 0 points and your goal is to reach 19 or 20 points.

For example, suppose you had the following options:

A = number between 4 through 7.

B = number between 1 through 8.

A sample game might go:

Points = 0, choose option A(add 4-7).

Points = 4, choose option B(add 1-8).

Points = 12, choose option B(add 1-8).

Points = 16, choose option B(add 1-8).

Points = 21, you lose.

Make a program that asks the user to give the ranges for both options A and B. You may assume that both options A and B have a minimum of adding at least one point.

To figure out which moves are the best, simulate 10,000,000 games (this should take about 5 seconds to run) with random choices at each turn. Record how often you won/lost the game for each point value and each option picked. If you won the game, each point/option along the whole game should get a +1 and each loss a -1.

Thus if the sample game above was the first game played, you should keep the tally:

0 Points: A=-1, B=0

1Points: A=0, B=0

2 Points: A=0, B=0

3 Points: A=0, B=0

4 Points: A=0, B=-1

5 Points: A=0, B=0

6 Points: A=0, B=0

7 Points: A=0, B=0

8 Points: A=0, B=0

9 Points: A=0, B=0

10 Points: A=0, B=0

11 Points: A=0, B=0

12 Points: A=0, B=-1

13 Points: A=0, B=0

14 Points: A=0, B=0

15 Points: A=0, B=0

16 Points: A=0, B=-1

17 Points: A=0, B=0

18 Points: A=0, B=0

At the end, show which option is best to play for each point value (i.e. whichever tally is higher). (Note: there is also a mathematical way to figure out the best moves in games like this involving expected values of random variables.)

------------------------------------------------------------------------------------------

Example 1:

Enter Option A range:

4-7

Enter Option B range:

1-8

Points=0, should play B

Points=1, should play A

Points=2, should play A

Points=3, should play A

Points=4, should play B

Points=5, should play B

Points=6, should play B

Points=7, should play A

Points=8, should play A

Points=9, should play A

Points=10,should play B

Points=11, should play B

Points=12, should play B

Points=13, should play A

Points=14, should play A

Points=15, should play A

Points=16, should play B

Points=17, should play B

Points=18, should play B

--------------------------------------

Example 2:

Enter Option A range:

1-10

Enter Option B range:

5-5

Points=0, should play B

Points=1, should play A

Points=2, should play A

Points=3, should play A

Points=4, should play B

Points=5, should play B

Points=6, should play A

Points=7, should play A

Points=8, should play A

Points=9, should play B

Points=10, should play B

Points=11, should play A

Points=12, should play A

Points=13, should play A

Points=14, should play B

Points=15, should play B Points=16, should play A

Points=17, should play A

Points=18, should play A

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Code //Include the needed #include <iostream> #include <fstream> #include <string> #include <cs tring> #include <stdlib.h> #i//Declare and initialize point int polnt 0; //Loop for (int inc1-0 inc1K10000 inc1++) //Declare and initialize listofPoints i//Update int totaloffset- -1; //Check condition if (point - 19 11 point- 20) //Update totalOffset-1; for (int inc2-0; inc2 <Sample output clusers 3015951documentslvisual studio 20121Projects lQuasar DebugiQuasar.exe Enter range for A 4- Enter range

Executable code

//Include the needed header files
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <vector>
#include <limits.h>
#include <time.h>
using namespace std;

//Driver
int main ()
{
    //Function srand()
    srand(time(NULL));
   
    //Declare the needed variable
    int minimumA, maximumA, minimumB, maximumB;
   
    //Prompt for input
    cout << "Enter range for A: ";
   
    //Read input
    cin >> minimumA;
   
    //Read input
    cin >> maximumA;
   
    //Prompt for input
    cout << "Enter range for B: ";
   
    //Read input
    cin >> minimumB;
   
    //Read input
    cin >> maximumB;
   
    //Declare an array
    int pointToACounter[19];
   
    //Declare an array
    int pointToBCounter[19];
   
    //Declare and initialize A range
    int rangeA = maximumA-minimumA+1;
   
    //Declare and initialize B range
    int rangeB = maximumB-minimumB+1;
   
    //Declare and initialize point
    int point = 0;

    //Loop
    for (int inc1=0; inc1<10000; inc1++)
    {
        //Declare and initialize listOfPoints
        int listOfPoints[100000] = {-1};
       
        //Declare and initialize listOfOptions
        int listOfOptions[100000] = {-1};
       
        //Declare and initialize indices
        int index1 = 0, index2= 0;
       
        //Initialize point
        point = 0;
       
        //Loop
        while (point <= 18)
        {
            //Initialize
            int choice = rand()%(2);
           
            //Update listOfPoints
            listOfPoints[index1] = point;
           
            //Update listOfOptions
            listOfOptions[index2] = choice;
           
            //Increment index1
            index1++;
           
            //Increment index2
            index2++;
           
            //Check condition
            if (choice == 0)
            {
                //Update point
                point += (rand()%(rangeA) + minimumA);
            }
           
            //Otherwise
            else
            {
                //Update point
                point += (rand()%(rangeB) + minimumB);
            }
        }
       
        //Update
        int totalOffset = -1;
       
        //Check condition
        if (point == 19 || point == 20)
        {
            //Update
            totalOffset = 1;
        }       
        for (int inc2=0; inc2 < index1; inc2++)
        {
            //Check condition
            if( listOfOptions[inc2] != -1)
            {
                //Check condition
                if (listOfOptions[inc2] == 0)
                {
                    //Update
                    pointToACounter[listOfPoints[inc2]] += totalOffset;
                }
               
                //Otherwise
                else
                {
                    //Update
                    pointToBCounter[listOfPoints[inc2]] += totalOffset;
                }
            }
        }
    }
   
    //Loop
    for (int inc1=0; inc1<=18; inc1++)
    {
        //Display
        cout << "Point=" << inc1 << ", should play " << ((pointToACounter[inc1] >= pointToBCounter[inc1] ? "A" : "B")) << endl;
    }
   
    //Pause
    cin.get();cin.get();
   
    //Stop
    return 0;
}

Add a comment
Know the answer?
Add Answer to:
C++ Code: Suppose there is a game with two options: A and B. Each of these...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT