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

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

WBOY
WBOYOriginal
2024-05-02 18:51:02970Durchsuche

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];

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 Wahrscheinlichkeiten, um die Reihenfolge zu steuern, in der Elemente angezeigt werden.

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];
});

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];
}

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);
  • 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: 🎜rrreee🎜Durch 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!

Stellungnahme:
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