Méthodes en PHP pour contrôler l'ordre d'apparition des éléments d'un tableau en fonction de la probabilité : Perturber l'ordre du tableau : utilisez la fonction shuffle(). Attribuer des probabilités : utilisez array_map() pour attribuer une probabilité (0-1) à chaque élément. Trier le tableau pondéré : trier le tableau par ordre décroissant de probabilité (les éléments ayant la probabilité la plus élevée en premier). Extraire des éléments : extrayez les éléments du tableau trié dans l'ordre, c'est-à-dire brouillez le tableau dans un ordre contrôlé par probabilité.
Utiliser le contrôle de probabilité en PHP pour perturber l'ordre d'apparition des éléments du tableau
La perturbation de l'ordre des éléments du tableau est une exigence courante dans de nombreux scénarios de développement, tels que les tirages aléatoires, les mécanismes de jeu, etc. Si vous devez contrôler l'ordre d'apparition des éléments en fonction de leur probabilité après avoir mélangé le tableau, PHP fournit les fonctions et méthodes appropriées.
Préparation
Tout d'abord, préparez un tableau contenant les éléments que vous souhaitez brouiller. Par exemple :
$array = [1, 2, 3, 4, 5];
Utilisez la fonction shuffle()
pour mélanger le tableaushuffle()
函数打乱数组
shuffle()
函数可以打乱数组中元素的顺序。
shuffle($array);
使用概率控制元素出现的顺序
使用 array_map()
La fonction shuffle()
peut mélanger l'ordre des éléments dans le tableau. $probabilities = [0.2, 0.3, 0.4, 0.5, 0.6];
$weightedArray = array_map(function ($element, $probability) {
return [$element, $probability];
}, $array, $probabilities);
Utilisez la méthode array_map()
pour parcourir les éléments du tableau et attribuer une probabilité à chaque élément. La valeur de probabilité va de 0 à 1, où 0 signifie que l'élément n'apparaîtra jamais et 1 signifie que l'élément apparaîtra toujours. usort($weightedArray, function ($a, $b) {
return $b[1] <=> $a[1];
});
Triez le tableau pondéré, l'élément avec la probabilité la plus élevée sera au début du tableau. $reorderedArray = [];
foreach ($weightedArray as $element) {
$reorderedArray[] = $element[0];
}
$items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5']; $probabilities = [0.2, 0.3, 0.4, 0.5, 0.6]; shuffle($items); $weightedItems = array_map(function ($item, $probability) { return [$item, $probability]; }, $items, $probabilities); usort($weightedItems, function ($a, $b) { return $b[1] <=> $a[1]; }); $drawnItems = []; for ($i = 0; $i < 3; $i++) { $drawnItems[] = $weightedItems[$i][0]; } print_r($drawnItems);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!