#!/usr/bin/python # -*- coding: UTF-8 -*- """ Petit programme destiné à répondre à la question suivante : - Quelle est la probabilité qu'au moins deux personnes aient leur anniversaire le même jour dans un groupe de 40 personnes. Hypothèses : l'année fait 365 jours et les naissances des personnes se distribuent uniformément (pas de jumeaux,...) Remarque : la solution doit pouvoir être généralisée ! """ from math import log, exp # nombre de possibilités différentes # (= nombre de jours d'une année dans les exemples) poss = 365 # nombre d'items (personnes présentes) n = 40 # solution : p = poss ! / ( (poss-n) ! * poss^n) pcomp = 1. for i in range(poss, poss-n, -1): pcomp = pcomp * i / poss print("calcul exact : ", pcomp, 1.-pcomp) # calcul suivant l'approximation de Stirling ( ln(j!) ~= j ln(j) - j # l'approximation est d'autant plus valable que poss est grand et n << poss pcomps = exp(poss*log(poss)-poss - (poss-n)*log(poss-n) + (poss-n) - n*log(poss)) print("Approximation de Stirling : ", pcomps, 1.-pcomps)