Note aux modérateurs: Ce n'est pas un devoir.PHP: Comment distribuer des valeurs à des variables avec une probabilité égale?
J'ai l'exemple suivant:
$points = 10;
$a = 0;
$b = 0;
$c = 0;
$d = 0;
Je veux distribuer au hasard des points aux variables ($ a, $ b, $ c, $ d) jusqu'à atteindre zéro $ points. Ainsi, la production aléatoire prévu après l'exécution de certaines fonctions/script devrait ressembler à ceci:
$points = 0;// Must be zero
$a = 3;
$b = 1;
$c = 0;
$d = 6;
Je pense à faire une solution simple, qui est la suivante:
while($points > 0) {
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$a += $points_taken;
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$b += $points_taken;
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$c += $points_taken;
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$d += $points_taken;
}
La fonction a 1 problème : $ a a beaucoup plus de chance de prendre plus de points (ou même tous les points) parce qu'il est premier dans la liste, alors que $ d a beaucoup plus de chances de prendre moins de points (ou pas du tout) .
Question: Comment puis-je donner à toutes les variables des chances égales de distribution?
Remarque: C'est bien si l'une des variables a pris tous les points.
travail dans un tableau, et un coup d'oeil à http://php.net/array_rand – Calimero
Avez-vous besoin de définir des points $ à 0 à la fin? – Manav
@Manav Pas nécessairement, mais je veux distribuer tous les 10 points – evilReiko