<?php
$test = probabilite(array(0.15, 0.1, 0.55, 0.1), array(0,0,3,1,1), 5);
echo $test;
function combinaison($nombredeupsvoulus, $nombretotal) {
return factoriel($nombretotal)/(factoriel($nombredeupsvoulus)*factoriel($nombretotal-$nombredeupsvoulus));
}
function factoriel($nombre){
if($nombre==0) {
return 1;
}else
return $nombre*factoriel($nombre-1);
}
function probabilite($tableaudeProbabilite, $tableauDesUpMinElements, $nombreDeUpsRestants){
$N=$nombreDeUpsRestants;//nombre de up restant
$probaFeu=$tableaudeProbabilite[0];//proba d'up en feu
$probaBois=$tableaudeProbabilite[1];//proba d'up en bois
$probaEau=$tableaudeProbabilite[2];//proba d'up en eau
$probaFoudre=$tableaudeProbabilite[3];//proba d'up en foudre. La proba d'up en air se déduit des autres proba.
$feu=$tableauDesUpMinElements[0];//nombre de up min désiré en feu
$bois=$tableauDesUpMinElements[1];//nombre de up min désiré en bois
$eau=$tableauDesUpMinElements[2];//nombre de up min désiré en eau
$foudre=$tableauDesUpMinElements[3];//nombre de up min désiré en foudre
$air=$tableauDesUpMinElements[4];//nombre de up min désiré en air
$x=$feu;
$s1=0;
while($x<=($N-($bois+$eau+$foudre+$air)))
{
$y=$bois;
$s2=0;
while($y<=($N-($x+$eau+$foudre+$air)))
{
$z=$eau;
$s3=0;
while($z<=($N-($x+$y+$foudre+$air)))
{
$t=$foudre;
$s4=0;
while($t<=($N-($x+$y+$z+$air)))
{
$s4=$s4+combinaison($t,$N-($x+$y+$z))*pow($probaFoudre,$t)*pow(1-($probaFeu+$probaBois+$probaEau+$probaFoudre),$N-($x+$y+$z+$t));
$t++;
}
$s3=$s3+combinaison($z,$N-($x+$y))*pow($probaEau,$z)*$s4;
$z++;
}
$s2=$s2+combinaison($y,$N-$x)*pow($probaBois,$y)*$s3;
$y++;
}
$s1=$s1+combinaison($x,$N)*pow($probaFeu,$x)*$s2;
$x++;
}
return $s1;
}