Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann die Reihenfolge des Auftretens von Elementen durch Wahrscheinlichkeit gesteuert werden, nachdem das PHP-Array gemischt wurde?
Methoden in PHP, um die Reihenfolge des Erscheinens von Array-Elementen basierend auf der Wahrscheinlichkeit zu steuern: Unterbrechen Sie die Reihenfolge des Arrays: Verwenden Sie die Funktion shuffle(). Wahrscheinlichkeiten zuweisen: Verwenden Sie array_map(), um jedem Element eine Wahrscheinlichkeit (0-1) zuzuweisen. Gewichtetes Array sortieren: Sortieren Sie das Array in absteigender Reihenfolge der Wahrscheinlichkeit (Elemente mit höherer Wahrscheinlichkeit zuerst). Elemente extrahieren: Elemente nacheinander aus dem sortierten Array extrahieren, d. h. das Array in einer wahrscheinlichkeitskontrollierten Reihenfolge durcheinander bringen.
Verwendung der Wahrscheinlichkeitskontrolle in PHP, um die Reihenfolge des Erscheinens von Array-Elementen zu stören
Das Unterbrechen der Reihenfolge von Array-Elementen ist eine häufige Anforderung in vielen Entwicklungsszenarien, wie z. B. Zufallsziehungen, Spielmechanismen usw. Wenn Sie die Reihenfolge des Erscheinens von Elementen nach der Wahrscheinlichkeit nach dem Mischen des Arrays steuern müssen, stellt PHP entsprechende Funktionen und Methoden zur Verfügung.
Vorbereitung
Bereiten Sie zunächst ein Array vor, das die Elemente enthält, die Sie verschlüsseln möchten. Zum Beispiel:
$array = [1, 2, 3, 4, 5];
Verwenden Sie die Funktion shuffle()
, um das Array zu mischen.shuffle()
函数打乱数组
shuffle()
函数可以打乱数组中元素的顺序。
shuffle($array);
使用概率控制元素出现的顺序
使用 array_map()
Die Funktion shuffle()
kann die Reihenfolge der Elemente im Array ändern. $probabilities = [0.2, 0.3, 0.4, 0.5, 0.6];
$weightedArray = array_map(function ($element, $probability) {
return [$element, $probability];
}, $array, $probabilities);
Verwenden Sie die Methode array_map()
, um die Array-Elemente zu durchlaufen und jedem Element eine Wahrscheinlichkeit zuzuweisen. Der Wahrscheinlichkeitswert reicht von 0 bis 1, wobei 0 bedeutet, dass das Element nie erscheint und 1 bedeutet, dass das Element immer erscheint. usort($weightedArray, function ($a, $b) {
return $b[1] <=> $a[1];
});
Sortieren Sie das gewichtete Array. Das Element mit der höheren Wahrscheinlichkeit befindet sich am Anfang des Arrays. $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);
Das obige ist der detaillierte Inhalt vonWie kann die Reihenfolge des Auftretens von Elementen durch Wahrscheinlichkeit gesteuert werden, nachdem das PHP-Array gemischt wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!