Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Algorithmus zur Gewinnwahrscheinlichkeit

PHP-Algorithmus zur Gewinnwahrscheinlichkeit

WBOY
WBOYOriginal
2016-08-08 09:24:17993Durchsuche

Wir schließen zunächst den Backend-PHP-Prozess ab. Die Hauptaufgabe von PHP besteht darin, die Auszeichnungen und die entsprechende Gewinnwahrscheinlichkeit zu konfigurieren. Wenn die Front-End-Seite auf ein bestimmtes Feld klickt, wird eine Ajax-Anfrage an das Backend-PHP gesendet Dann wird das Backend-PHP basierend auf der konfigurierten Wahrscheinlichkeit die Gewinnergebnisse über den Wahrscheinlichkeitsalgorithmus angeben und die nicht gewonnenen Preisinformationen werden auch im JSON-Datenformat an die Front-End-Seite gesendet.

Sehen wir uns zunächst die Wahrscheinlichkeitsberechnungsfunktion an

<span> 1</span> <span>function</span> get_rand(<span>$proArr</span><span>) { 
</span><span> 2</span>     <span>$result</span> = ''<span>; 
</span><span> 3</span>  
<span> 4</span>     <span>//</span><span>概率数组的总概率精度 </span>
<span> 5</span>     <span>$proSum</span> = <span>array_sum</span>(<span>$proArr</span><span>); 
</span><span> 6</span>  
<span> 7</span>     <span>//</span><span>概率数组循环 </span>
<span> 8</span>     <span>foreach</span> (<span>$proArr</span> <span>as</span> <span>$key</span> => <span>$proCur</span><span>) { 
</span><span> 9</span>         <span>$randNum</span> = <span>mt_rand</span>(1, <span>$proSum</span><span>); 
</span><span>10</span>         <span>if</span> (<span>$randNum</span> <= <span>$proCur</span><span>) { 
</span><span>11</span>             <span>$result</span> = <span>$key</span><span>; 
</span><span>12</span>             <span>break</span><span>; 
</span><span>13</span>         } <span>else</span><span> { 
</span><span>14</span>             <span>$proSum</span> -= <span>$proCur</span><span>; 
</span><span>15</span> <span>        } 
</span><span>16</span> <span>    } 
</span><span>17</span>     <span>unset</span> (<span>$proArr</span><span>); 
</span><span>18</span>  
<span>19</span>     <span>return</span> <span>$result</span><span>; 
</span><span>20</span> } 

Der obige Code ist ein klassischer Wahrscheinlichkeitsalgorithmus. Angenommen, das Array ist: array(100.200.300.400). Es wird zunächst überprüft, ob die erste Zahl im Wahrscheinlichkeitsbereich von 1.1000 liegt Wenn dies nicht der Fall ist, beträgt der Wahrscheinlichkeitsraum, dh der Wert von k minus dem Wahrscheinlichkeitsraum der gerade vorliegenden Zahl, minus 100, was bedeutet, dass die zweite Zahl in 1 liegt. Abgeschirmt im Bereich von 900. So bleibt bis zum Schluss immer eine Nummer übrig, die den Anforderungen entspricht. Es ist, als würde man etwas in einer Kiste berühren. Wenn das erste nicht da ist, das zweite nicht da ist und das dritte nicht da ist, dann muss das letzte da sein. Dieser Algorithmus ist einfach und sehr effizient. Der Schlüssel ist, dass dieser Algorithmus in unseren vorherigen Projekten angewendet wurde, insbesondere in Projekten mit großen Datenmengen.

Als nächstes konfigurieren wir die Auszeichnungen über PHP.

<span>1</span> <span>$prize_arr</span> = <span>array</span><span>( 
</span><span>2</span>     '0' => <span>array</span>('id'=>1,'prize'=>'平板电脑','v'=>1), 
<span>3</span>     '1' => <span>array</span>('id'=>2,'prize'=>'数码相机','v'=>5), 
<span>4</span>     '2' => <span>array</span>('id'=>3,'prize'=>'音箱设备','v'=>10), 
<span>5</span>     '3' => <span>array</span>('id'=>4,'prize'=>'4G优盘','v'=>12), 
<span>6</span>     '4' => <span>array</span>('id'=>5,'prize'=>'10Q币','v'=>22), 
<span>7</span>     '5' => <span>array</span>('id'=>6,'prize'=>'下次没准就能中哦','v'=>50), 
<span>8</span> ); 

Dieses zweidimensionale Array zeichnet alle Preisinformationen dieser Lotterie auf, wobei id die Gewinnstufe, award den Preis und v die Gewinnwahrscheinlichkeit darstellt. Beachten Sie, dass v eine Ganzzahl sein muss. Sie können das v des entsprechenden Preises auf 0 setzen, was bedeutet, dass die Wahrscheinlichkeit, den Preis zu gewinnen, 0 ist. Je größer die Basis, desto mehr genau kann die Wahrscheinlichkeit wiedergegeben werden. In diesem Beispiel beträgt die Summe von v 100, dann beträgt die Gewinnwahrscheinlichkeit für das Tablet 1 %. Wenn die Summe von v 10.000 beträgt, beträgt die Gewinnwahrscheinlichkeit eins zu zehntausend.

Jedes Mal, wenn die Front-End-Seite angefordert wird, durchläuft PHP das Award-Setting-Array und erhält die gezogene Award-ID über die Wahrscheinlichkeitsberechnungsfunktion get_rand. Speichern Sie die Gewinnerpreise im Array $res['yes'], speichern Sie die verbleibenden nicht gewinnenden Informationen in $res['no'] und geben Sie schließlich die JSON-Nummerndaten auf der Front-End-Seite aus.

<span> 1</span> <span>foreach</span> (<span>$prize_arr</span> <span>as</span> <span>$key</span> => <span>$val</span><span>) { 
</span><span> 2</span>     <span>$arr</span>[<span>$val</span>['id']] = <span>$val</span>['v'<span>]; 
</span><span> 3</span> <span>} 
</span><span> 4</span>  
<span> 5</span> <span>$rid</span> = get_rand(<span>$arr</span>); <span>//</span><span>根据概率获取奖项id </span>
<span> 6</span>  
<span> 7</span> <span>$res</span>['yes'] = <span>$prize_arr</span>[<span>$rid</span>-1]['prize']; <span>//</span><span>中奖项 </span>
<span> 8</span> <span>unset</span>(<span>$prize_arr</span>[<span>$rid</span>-1]); <span>//</span><span>将中奖项从数组中剔除,剩下未中奖项 </span>
<span> 9</span> <span>shuffle</span>(<span>$prize_arr</span>); <span>//</span><span>打乱数组顺序 </span>
<span>10</span> <span>for</span>(<span>$i</span>=0;<span>$i</span><<span>count</span>(<span>$prize_arr</span>);<span>$i</span>++<span>){ 
</span><span>11</span>     <span>$pr</span>[] = <span>$prize_arr</span>[<span>$i</span>]['prize'<span>]; 
</span><span>12</span> <span>} 
</span><span>13</span> <span>$res</span>['no'] = <span>$pr</span><span>; 
</span><span>14</span> <span>echo</span> json_encode(<span>$res</span>);

Das Obige stellt den PHP-Lotterie-Wahrscheinlichkeitsalgorithmus vor, einschließlich der relevanten Inhalte. Ich hoffe, dass er Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein wird.

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