<?php $a_values = array( "1-5" => 50, "6" => 10, "7" => 10, "8" => 10, "9-10" => 20 ); $i_result = rand(1, 10); echo 'Je suis le '.$i_result.' '; echo getPercentage($a_values, $i_result); echo ' '; $a_values = array( "1-50" => 50, "51-60" => 10, "61-70" => 10, "71-80" => 10, "81-100" => 20 ); $i_result = rand(1, 100); echo 'Je suis le '.$i_result.' '; echo getPercentage($a_values, $i_result); echo ' '; function getPercentage($a_values, $i_result) { foreach ($a_values as $i_num => $s_percentage) { $a_num = (array) explode("-", $i_num); if ((isset($a_num[1])) && ($a_num[0] <= $i_result) && ($a_num[1] >= $i_result)) { $s_result = (string) sprintf('Le %d a %d% de chance', $i_result, utf8_decode($s_percentage)); } elseif ($i_num === $i_result) { $s_result = (string) sprintf('Le %d a %d% de chance', $i_result, utf8_decode($s_percentage)); } } return (string) $s_result; }
Tu peux faire 2 tableaux, 1 avec les proba, l'autre avec les données
Dans les probas, tu mets le nombre de chance d'apparition (5, 4, 1).
Puis, tu fais la somme des valeurs du tableau (ici 10), puis tu fais un générateur aléatoire de 0 à la somme-1.
Puis tu parcours le tableau, si case inférieur à la valeur du tirage, alors, Tirage=Tirage-Case, sinon, tu prends la case.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question