944,059 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 9164
  • C++ RSS
Feb 18th, 2007
0

Coin Toss Simulation, getting all Tails and one Heads

Expand Post »
Hey, it looks like I'm stuck yet again. I've been working on this for awhile and I can't figure out why it's not working properly. Here's what I'm supposed to do:
Create a function that simulates coin tossing. The function should have no input and no return value. When the function is called, it first asks the number of times they want to flip the coin, say 20, then the function will call random number function rand() 20 times. Each time rand() will randomly generate two numbers between 0 and 1 and they represent the heads and tails respectively. If it's heads print H if it's tails print T.


#include<iostream>
#include<string>
using namespace std;
void displayMenu(void);
void coinToss(int flips);
 
int main()
{
    int choice;
    int flips;
 
    string dummy;
    do{
         cout<<"What would you like to do?\n";
         displayMenu();
         cin >> choice;
         switch(choice)
        {
        case 1:
               cout <<"How many times would you like to flip the coin?"<< endl;
               cin >> flips;
               coinToss( flips );
               getline( cin, dummy );
               getline( cin, dummy );
               break;
         }
}
        while( choice == 3 );
        cout <<"The program has terminated. Good Bye"<< endl;
        return 0; 
}
 
void displayMenu( void )
 
{
cout << "==========================\n";
cout << "1. Flip a coin\n";
cout << "2. Multiplication\n";
cout << "3. Quit\n";
cout << "==========================\n";
}
 
void coinToss( int flips )
 
{
 
   int counter = 0, head = 0, tail = 0, toss;
   while( flips != 0 )
 
{
   toss--;
   counter++;
   toss = rand() % 1;
 
   if( toss == 1 )
{
   head++;
   cout << "H" << endl;
}
 
   else
{
   tail++;
   cout << "T" << endl;
}
}
}

The problem that I'm having is that when I run the program it always gives me all Tails and one head. So if you have any ideas as to why it's doing that I'd appreciate the help. Thanks again for all the help.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Rickenbacker360 is offline Offline
21 posts
since Jan 2007
Feb 18th, 2007
0

Re: Coin Toss Simulation, getting all Tails and one Heads

Consider initializing your random number generator at the beginning of your program:
C++ Syntax (Toggle Plain Text)
  1. #include <ctime>
  2. srand(time(0));
Your logic is totally weird here:
   toss--;
   counter++;
   toss = rand() % 1;
It's useless to deincrement toss when it gets assigned the random number 2 statements later. And rand() % 1 won't work, because the remainder of anything divided by 1 will be 0 (except for decimals, but you're assigning to an integer so any fractions are thrown away).
Team Colleague
Reputation Points: 2240
Solved Threads: 338
Vampirical Lurker
John A is offline Offline
5,055 posts
since Apr 2006
Feb 18th, 2007
0

Re: Coin Toss Simulation, getting all Tails and one Heads

Also, your coinToss() function needs to be formatted properly. It'll only take you 30 seconds...
Moderator
Reputation Points: 3278
Solved Threads: 894
Posting Sage
WaltP is offline Offline
7,747 posts
since May 2006
Feb 18th, 2007
0

Re: Coin Toss Simulation, getting all Tails and one Heads

So where is the function that has no input and no return value and upon calling it asks the user how many coin tosses and then simulates that number of coin tosses?
Administrator
Staff Writer
Reputation Points: 1422
Solved Threads: 162
The Queen of DaniWeb
cscgal is offline Offline
13,646 posts
since Feb 2002
Feb 20th, 2007
0

Re: Coin Toss Simulation, getting all Tails and one Heads

Hey, thank you for all the replies I really appreciate it. Sorry I kind of disappeared but I got a bit sick after I posted this. I ended up getting it to work, so thank you all for the help. One quick question..did you all struggle when you first started C++ programming? I'm a big time perfectionist and it's driving me crazy that I'm having so much difficulty. If you did struggle what did you do to improve? Thanks again for the responses.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Rickenbacker360 is offline Offline
21 posts
since Jan 2007
Feb 20th, 2007
0

Re: Coin Toss Simulation, getting all Tails and one Heads

write more, more and more code till you faint in front of the computer
Reputation Points: 25
Solved Threads: 11
Junior Poster
tonakai is offline Offline
121 posts
since Feb 2005
May 28th, 2009
-1

Re: Coin Toss Simulation, getting all Tails and one Heads

Yeah, you've told it to Print H if 1, else print t. Therefore If the number is 1 (and only 1) it will be H. Randomly generated numbers are not whole numbers. You will get 0.45623. To fix it, it should be something like this:

if (rand()<0.5);
print "h",
else
print "t",
end
Reputation Points: 6
Solved Threads: 0
Newbie Poster
Somegamer is offline Offline
2 posts
since May 2009
May 29th, 2009
0

Re: Coin Toss Simulation, getting all Tails and one Heads

Not only do you resurrect an old thread, you don't even know what language you're dealing with. This is a C++ forum, not BASIC. Random numbers are integers.
Moderator
Reputation Points: 3278
Solved Threads: 894
Posting Sage
WaltP is offline Offline
7,747 posts
since May 2006
May 29th, 2009
0

Re: Coin Toss Simulation, getting all Tails and one Heads

Click to Expand / Collapse  Quote originally posted by WaltP ...
Not only do you resurrect an old thread, you don't even know what language you're dealing with. This is a C++ forum, not BASIC. Random numbers are integers.
Im sorry, but I didn't do it. I was stupid enough to leave myself logged into a ssp school computer during lunch/recess.

I had a look at my (dry cough) response and i know who did it. Im new to this site, and i had no idea it was and old thread because i found it in google.
Reputation Points: 6
Solved Threads: 0
Newbie Poster
Somegamer is offline Offline
2 posts
since May 2009

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: Input output problems
Next Thread in C++ Forum Timeline: Code Help - Restructure.





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC