このプロジェクトでは、PHP で宝くじの申請を行う必要があります。ユーザーが宝くじをクリックすると、3 つの異なる結果が返されます (つまり、賞: 1 等、2 等、3 等、宝くじありがとうございます)。賞品の価値が発生する確率は徐々に減少します。
これには、重み計算と同様のアルゴリズムが含まれます。この問題は単純な重み計算方法で解決され、確率も予想の範囲内でした。
この重みの計算方法の概要は次のとおりです。
まず、この例は 1 次元が数値インデックスである 2 次元配列にのみ適しています。データ配列の構造は次のとおりです。
<p>$data=array(</p> 0=>array('id'=>1,'name'=>'一等奖','weight'=>'5'),<br /> 1=>array('id'=>2,'name'=>'二等奖','weight'=>'10'),<br /> 2=>array('id'=>3,'name'=>'三等奖','weight'=>'25'),<br /> 3=>array('id'=>4,'name'=>'谢谢抽奖','weight'=>'60')<br /><p>);</p>
以下は重みを計算するための簡単なアルゴリズムです
<p>// 权重数值越高,被返回的概率越大</p>// author www.scutephp.com<br />function countWeight($data){<br /> $weight=0;<br /> foreach($data as $v){<br /> $weight+=$v['weight'];<br /> }<br /><p> $int=mt_rand(1,$weight);//获取一个随机数</p><p>$weight = 0;<br /></p><p>foreach($data as $v){<br />$weight+=$v['weight'];<br />if($int <= $weight) return $v;<br />}</p><p>}</p>
計算結果は次のように返されます: Array
(