BinomialesSomme=function(N1,P1,N2,P2) # Appel de la procédure avec les paramètres de chaque loi Binomiale. { Valeurs=c(1:(N1+1)*(N2+1)) # Vecteur qui contiendra les valeurs de chaque variable aléatoire. Probas=c(1:(N1+1)*(N2+1)) # Vecteur qui contiendra les probabilités de ces valeurs. for(k1 in 1:(N1+1)) { for(k2 in 1:(N2+1)) { Valeurs[(k1-1)*(N2+1)+k2]=(k1-1)+(k2-1) # Calcul des valeurs. Probas[(k1-1)*(N2+1)+k2]=dbinom(k1-1,N1,P1)*dbinom(k2-1,N2,P2) # Calcul des probabilités. } } Ordre=order(Valeurs) # Détermination de l'ordre des indices dans l'ordre croissant des valeurs. Distribution=rbind(Valeurs[Ordre],Probas[Ordre]) # Création d'un tableau dans l'ordre croissant des valeurs avec les deux lignes : valeurs et probabiltés. k=1 Boucle=TRUE while(Boucle==TRUE) # Boucle pour éliminer les valeurs répétées et cumulant les probabilités. { if(abs(Distribution[1,k]-Distribution[1,k+1])<=0.0001) # Si deux valeurs consécutives sont égales, { Distribution[2,k]=Distribution[2,k]+Distribution[2,k+1] # cumuler les probabilités, Distribution=Distribution[,-(k+1)] # éliminer la deuxième colonne. k=k-1 } k=k+1 if(k==ncol(Distribution)) # Si la dernière colonne est atteinte, { Boucle=FALSE # arrêter la boucle. } } options(digits=4) # Format d'affichage des nombres. return(Distribution) # Retour de la distribution. }