Wie kann die Reihenfolge des Auftretens von Elementen durch Wahrscheinlichkeit gesteuert werden, nachdem das PHP-Array gemischt wurde?

WBOY
Freigeben: 2024-05-02 18:51:02
Original
919 Leute haben es durchsucht

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.

Wie kann die Reihenfolge des Auftretens von Elementen durch Wahrscheinlichkeit gesteuert werden, nachdem das PHP-Array gemischt wurde?

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];
Nach dem Login kopieren

Verwenden Sie die Funktionshuffle(), um das Array zu mischen.shuffle()函数打乱数组

shuffle()函数可以打乱数组中元素的顺序。

shuffle($array);
Nach dem Login kopieren

使用概率控制元素出现的顺序

使用array_map()

Die Funktionshuffle()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);
Nach dem Login kopieren

Verwenden Sie Wahrscheinlichkeiten, um die Reihenfolge zu steuern, in der Elemente angezeigt werden.

Verwenden Sie die Methodearray_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]; });
Nach dem Login kopieren

Gewichtetes Array sortieren

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]; }
Nach dem Login kopieren

Elemente extrahieren

    Jetzt extrahieren Sie Elemente nacheinander aus dem sortierten gewichteten Array, um ein verschlüsseltes Array in einer wahrscheinlichkeitskontrollierten Reihenfolge zu erhalten.
  • $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);
    Nach dem Login kopieren
  • Praktischer Fall
  • Angenommen, es gibt ein Spiel, bei dem 3 Gegenstände zufällig aus einem Array mit 5 Gegenständen ausgewählt werden müssen. Die Wahrscheinlichkeit, dass jedes Element erscheint, beträgt:
  • Element 1: 20 %
  • Element 2: 30 %

    Element 3: 40 %

    Element 4: 50 %Element 5: 60 %Sie können drücken Die obigen Schritte implementieren den folgenden Code: rrreeeDurch Ausführen des obigen Codes werden 3 Elemente ausgegeben, die in einer wahrscheinlichkeitsgesteuerten Reihenfolge gezogen werden.

    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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!