Probleme de probabilités d'anniversaire

Résolu
annamir Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
 loupius -
Bonjour,
Écrire un programme C qui calcule et qui affiche les probabilités que deux personnes dans un groupe soient nées le même jour. La probabilité que deux personnes soient nées le même jour de l’année, pour un groupe de n personnes, est donnée par la formule suivante:

p(n) = 1 - 365/365 ´ 364/365 ´ 363/365 ´ ¼ ´ (365-n+1)/365

Ainsi, si n = 1, p(1) = 1 - 365/365 = 0 (ce qui est assez logique!);
si n = 2, p(2) = 1 - 365/365 ´ 364/365 = 0.002740; soit environ 0.27%,
si n = 3, p(3) = 1 - 365/365 ´ 364/365 ´ 363/365 = 0.008204; soit environ 0.82%,
etc.

exemple:
Probabilite que 2 anniversaires soient identiques dans un groupe de 4 personnes: 1.64%
Probabilite que 2 anniversaires soient identiques dans un groupe de 8 personnes: 7.43%
etc.
voilà ce que j'ai fait, dites moi ce que vous en pensez:
#include <stdio.h>

int main(){
double proba = 1;
int n, i;

printf ("Entrer le nombre de personnes: ");
scanf ("%d", &n);
for(i = 0; i <= n; i++)
proba = proba * (365 - i + 1)/365;
printf("\nPour %i personnes, la proba est de %.3f\n", n, 1 - proba);
}

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Tu as fait des erreurs dans les indices de la boucle for. Et un petit oubli de return 0;
Voici le programme corrigé :
#include <stdio.h>

int main(void){
    double proba = 1;
    int n, i;

    printf ("Entrer le nombre de personnes: ");
    scanf ("%d", &n);
    for(i = 0; i < n; i++)
        proba = proba * (365 - i)/365;
    printf("\nPour %i personnes, la proba est de %.2f%%\n", n, 100*(1 - proba));

    return 0;
}

0
loupius
 
Eh, j'te r'connais!
On va pas faire tous les exercices de ton bouquin!
C'est pas mal mais tu dois bien te rendre compte que tu n'obtiens pas le résultat escompté, d'où la conclusion: peut mieux faire (eh oui on corrige et on note ;-) ).
Je propose:
#include <stdio.h>

int main()
{
	double proba = 1.;
	int n, i;

	printf  ("Entrer le nombre de personnes: ");
	scanf ("%d", &n);
	for (i = 0; i < n; i++)
		proba = proba * (365 - i)/365;
	printf ("\nPour %i personnes, la proba est de %.3f\n", n, (1 - proba)*100);
	return 0;
}

Mais c'est bien la dernière fois.
0
loupius
 
Hou hou, t'es arrivé trop tard!
0