3v4l.org

run code in 300+ PHP versions simultaneously
<?php $test = probabilite(array(0.60,0.15,0.10,0.10), array(26,0,0,0,0), 49); 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; }
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.38, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
0.87184493313846

preferences:
277.81 ms | 406 KiB | 453 Q