- #1
- 27
- 0
Homework Statement
Write a program that approximates the probability that at least two people in a room of 50 people have the same birthday. Run 5,000 trials, count up the number at least two people have the same birthday, and divide by the number of trials to get a probability.
Homework Equations
The Attempt at a Solution
Code:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int bDayParadox (int people[]);
///////////////////////////////////////////////////
int main ()
{
int probability;
int sum = 0;
const int trials = 5000;
int people[49];
for (int j = 0; j < trials; j++)
{
sum = sum + bDayParadox(people);
}
probability = (sum / trials);
cout << bDayParadox(people) << endl;
cout << sum << endl;
cout << trials << endl;
cout << probability << endl;
}
/////////////////////////////////////////////////
int bDayParadox (int people[])
{
int coincidence = 0;
srand(time(NULL)); //generates seed for random numbers
for (int a = 0; a < 50; a++)
{
people[a] = rand() % 365 + 1;
}
for (int b = 0; b < 50; b++)
{
for (int c = b+1; c < 50; c++)
{
if (people[c] == people[b])
{
coincidence = 1;
}
}
}
return coincidence;
}
My output looks like this:
1 (bDayParadox run once)
5000 (sum)
5000 (trials, the constant)
353 (probability)
The value that is spit out for probability is unique each time.
My main problem with this is that probability should not be what it says. Also, my sum shouldn't always be 5000.