Heim  >  Artikel  >  Backend-Entwicklung  >  PHP- und JS-Algorithmus zur Gewinnwahrscheinlichkeit im Lotto

PHP- und JS-Algorithmus zur Gewinnwahrscheinlichkeit im Lotto

不言
不言Original
2018-07-06 16:21:251825Durchsuche

Dieser Artikel stellt hauptsächlich den Algorithmus zur Gewinnwahrscheinlichkeit in PHP und JS vor. Er hat einen gewissen Referenzwert. Jetzt können Freunde in Not auf den klassischen Wahrscheinlichkeitsalgorithmus verweisen.

Jetzt haben wir das Array: [10, 20, 30, 40] .

Bei entsprechender Gewinnwahrscheinlichkeit: 10 % für den Sonderpreis, 20 % für den ersten Preis, 30 % für den zweiten Preis, 40 % für den dritten Preis, insgesamt 100 %.

Zu Beginn des Algorithmus wird ein Wert $value aus dem Array ausgewählt und dann wird eine Zahl $rand zufällig aus dem Wahrscheinlichkeitsraum von 1-100 ausgewählt.

Vergleichen Sie $value und $rand. Wenn $rand innerhalb des $value-Wahrscheinlichkeitsbereichs liegt, geben Sie direkt den Schlüssel zurück, der $value entspricht.

Wenn nicht, subtrahieren Sie den $value-Wert vom Wahrscheinlichkeitsraumwert.

In diesem Beispiel wird nach dem ersten Urteil 10 abgezogen, was bedeutet, dass es beim zweiten Mal im Bereich von 1-90 gescreent wird.

Nach dieser Filterung wird es immer eine Nummer geben, die den Anforderungen entspricht.

Es ist, als würde man etwas in einer Kiste berühren

Das erste ist nicht, das zweite ist nicht, und das dritte ist nicht, dann muss es das letzte sein.

Dieser Algorithmus ist einfach und sehr effizient.

PHP-Implementierung

<?php
    function getRand($arr)
    {
        $result = &#39;&#39;;
        //概率数组的总概率精度
        $sum = array_sum($arr);
        //概率数组循环
        foreach ($arr as $key => $value) {
            $rand = mt_rand(1, $sum);
            if ($rand <= $value) {
                $result = $key;
                break;
            } else {
                $sum -= $value;
            }
        }
        unset ($arr);
        return $result;
    }
使用范例:

$a = [10, 20, 30, 40];
// 输出3的概率最大
echo &#39;PHP:&#39; . getRand($a);
Javascript-Implementierung
<script>
    function getRand(arr) {
        var result = 0;
        var sum = arr.reduce(function(a, b) {
            return a + b;
        });

        for (index in arr) {
            rand = Math.round(Math.random() * (sum - 1) + 1);
            if (rand <= arr[index]) {
                return index;
            } else {
                sum -= arr[index];
            }
        }

        return result;
    }

    // 使用示例,输出2的概率最大
    var a = [10, 20, 30, 40];
    document.write(&#39;<br />Javascript:&#39; + getRand(a));
</script>
使用范例:

    // 使用示例,输出3的概率最大
    var a = [10, 20, 30, 40];
    document.write(&#39;<br />Javascript:&#39; + getRand(a));
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, das wird so sein Seien Sie für das Lernen aller nützlich. Bitte beachten Sie die chinesische PHP-Website für weitere verwandte Inhalte!
Verwandte Empfehlungen:

So generieren Sie schnell moderne Formulare mit PHP


php verwendet einfach die Shmop-Funktion, um gemeinsame Formulare zu erstellen Speicher zur Reduzierung der Serverlast

Das obige ist der detaillierte Inhalt vonPHP- und JS-Algorithmus zur Gewinnwahrscheinlichkeit im Lotto. 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