File:Birthday paradox probability.svg

Summary

Description
English: In probability theory, the birthday paradox concerns the probability that, in a set of n randomly chosen people, some pair of them will have the same birthday. By the pigeonhole principle, the probability reaches 100% when the number of people reaches 367 (since there are 366 possible birthdays, including February 29). However, 99% probability is reached with just 57 people, and 50% probability with 23 people. These conclusions are based on the assumption that each day of the year (except February 29) is equally probable for a birthday.
Date
Source Own work
Author Guillaume Jacquenot
SVG development
InfoField
Source code
InfoField

Python code

# -*- coding: utf-8 -*-
#
# Script to generate in English and French, graphs for the
# birthday problem.
#
# **************************************************************
# http://en.wikipedia.org/wiki/Birthday_problem
# From Wikipedia, the free encyclopedia:
# In probability theory, the birthday problem or birthday
# paradox concerns the probability that, in a set of n
# randomly chosen people, some pair of them will have the
# same birthday. By the pigeonhole principle, the probability
# reaches 100% when the number of people reaches 367
# (since there are 366 possible birthdays, including February
# 29). However, 99% probability is reached with just 57 people,
# and 50% probability with 23 people. These conclusions are
# based on the assumption that each day of the year (except
# February 29) is equally probable for a birthday.
#
# The mathematics behind this problem led to a well-known
# cryptographic attack called the birthday attack, which
# uses this probabilistic model to reduce the complexity
# of cracking a hash function.
#
# Text under the
# Creative Commons Attribution-ShareAlike License
# **************************************************************
#
#
# Guillaume Jacquenot
# 2012/12/16

from pylab import *
import numpy as np

def makePlot(
        generateEnglishPlot = True,
        outputFilename = r'Birthday_paradox.svg',
        useYLogScale = False):
    N=91
    n = np.arange(float(N))
    pbar=np.exp(-n* (n-1) / (2.0*365.0))
    p=1.0-pbar

    n05 = 0.5*(1.0+np.sqrt(1-8.0*365.0*np.log(1.0-0.5)))
    plot([n05,n05],[0.0,0.5],c='k', linestyle='--')
    plot([0.0,n05],[0.5,0.5],c='k', linestyle='--')
    text(23.5,0.02,' ~23')
    if generateEnglishPlot:
        plot(n,p   ,c='r',label = unicode('Probability of a pair', 'utf8'))
        plot(n,pbar,c='b',label = unicode('Probability of no matching pair', 'utf8'))
    else:
        plot(n,p   ,c='r',label = unicode('Probabilité de coïncidence', 'utf8'))
        plot(n,pbar,c='b',label = unicode('Probabilité de non-coïncidence', 'utf8'))

    legend(loc='right')
    xlim(0, N)
    if useYLogScale:
        ylim(1e-6, 1)
        ax = gca()
        ax.set_yscale('log')
    else:
        ylim(0, 1)
        yticks([0.0,0.2,0.4,0.5,0.6,0.8,1.0])
    xticks(range(0, N, 10))
    grid(True, ls='-', c='#a0a0a0')
    if generateEnglishPlot:
        xlabel('Number of people')
        ylabel('Probability')
    else:
        xlabel('Nombre de personnes')
        ylabel(unicode('Probabilité', 'utf8'))
    savefig(outputFilename)
    show()

makePlot(generateEnglishPlot = True, outputFilename = r'Birthday_paradox.svg')
makePlot(generateEnglishPlot = False, outputFilename = r'Paradoxe_anniversaire.svg')

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Category:CC-BY-SA-3.0#Birthday%20paradox%20probability.svgCategory:Self-published work
Category:Birthday paradox
Category:Birthday paradox Category:CC-BY-SA-3.0 Category:Self-published work Category:Valid SVG created with Matplotlib code