MATLAB Plotting Birthday Problem in MATLAB: Analytical Form vs Code Implementation

  • Thread starter Thread starter Bassalisk
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The discussion centers on plotting the birthday problem using MATLAB, specifically calculating the probability of not sharing a birthday among a group of people. The analytical formula provided is P(n) = (365 * 364 * 363 ... (365 - n + 1)) / 365^n. The user encounters issues with MATLAB, receiving an "infinity" result when attempting to compute the fraction, likely due to exceeding the maximum limits for integers and floating-point numbers in MATLAB. Suggestions are made to approach the problem recursively, starting from n=0 and building up to higher values, which may help avoid computational limits. The conversation highlights the challenges of handling large factorial calculations in programming environments.
Bassalisk
Messages
946
Reaction score
2
So I am trying to plot the birthday problem.

Number of people vs chance not to have the same birthday.

I know the analytical form

P(n)={\Large\frac{365\cdot 364\cdot 363...(365-n+1)}{365^{n}}}

problem is, MATLAB is giving me this, when I try to put that into code.

[PLAIN]http://pokit.org/get/e8cbb0974a4b30d349d554c27ab0f537.jpg

And that's only trying to realize the top part of the fraction.

I am trying to get this result.

[URL]http://upload.wikimedia.org/wikipedia/commons/f/ff/Birthdaymatch.png[/URL]

Source wikipedia.Thank you.
 
Last edited by a moderator:
Physics news on Phys.org
looks like you are not dividing by 365 to the nth power
 
Dr Transport said:
looks like you are not dividing by 365 to the nth power

Still he is giving me infinity. I think he calculates factorial first, then to the nth, then divides that and still gets infinity
 
Unfortunately, MATLAB has maxima on both integers and floating point numbers:
http://www.mathworks.com/help/techdoc/ref/intmax.html
http://www.mathworks.com/help/techdoc/ref/realmax.html

I believe that both are exceeded by the calculations that you're trying to make in the numerator and denominator.

However, I believe that you can do this recursively (i.e. start with n=0, and use this result to generate n=1, use that result to generate n=2, etc.)
http://en.wikipedia.org/wiki/Recursion_(computer_science)
 
MATLABdude said:
Unfortunately, MATLAB has maxima on both integers and floating point numbers:
http://www.mathworks.com/help/techdoc/ref/intmax.html
http://www.mathworks.com/help/techdoc/ref/realmax.html

I believe that both are exceeded by the calculations that you're trying to make in the numerator and denominator.

However, I believe that you can do this recursively (i.e. start with n=0, and use this result to generate n=1, use that result to generate n=2, etc.)
http://en.wikipedia.org/wiki/Recursion_(computer_science)

My hero <3 Thank you!
 
Back
Top