PHPの当選確率アルゴリズム。スクラッチカード、ビッグルーレット、その他の宝くじアルゴリズムに使用できます。使い方はとても簡単で、コードには詳細なコメントと手順があり、一目で理解できます
$proCur) {
$randNum = mt_rand(1, $proSum);
if ($randNum
$result = $key;
休憩;
} 他 {
$proSum -= $proCur;
}
}
設定解除 ($proArr);
$result を返す;
}
/*
*賞品の数々
* は、この宝くじのすべての賞品情報を記録する 2 次元配列です。
※このうち、idは当選レベル、priseは賞金、vは当選確率を表します。* v は整数である必要があることに注意してください。対応する賞の v を 0 に設定できます。これは、賞を獲得する確率が 0 であることを意味します。
* 配列内の v の合計 (底値) が大きいほど、確率の精度が高くなります。
* この例では、v の合計が 100 であるため、対応するタブレットの勝利確率は 1% になります。
* vの合計が10,000の場合、当たる確率は1万分の1です。*
*/
$prize_arr = array(
'0' => array('id'=>1,'prize'=>'tablet','v'=>1),
'1' => array('id'=>2,'賞品'=>'デジタルカメラ','v'=>5),
'2' => array('id'=>3,'prize'=>'スピーカーデバイス','v'=>10),
'3' => array('id'=>4,'prize'=>'4G USB フラッシュドライブ','v'=>12),
'4' => array('id'=>5,'賞品'=>'10Q コイン','v'=>22),
'5' => array('id'=>6,'prize'=>'次回は当たるかも','v'=>50),
);
/*
* フロントエンド ページがリクエストされるたびに、PHP は特典設定配列をループします。
※抽選賞品IDは確率計算関数get_randで取得します。
* 優勝賞金を配列 $res['yes'] に保存します、
※残りの勝てなかった情報は$res['no']に格納されます、
* 最後にjsonの数値データをフロントエンドページに出力します。
*/
foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];
}
$rid = get_rand($arr) //確率に基づいて特典IDを取得します
;
$res['yes'] = $prize_arr[$rid-1]['prize'] //賞品を獲得します;
unset($prize_arr[$rid-1]); //未獲得の賞品を残して、配列から当選賞品を削除しますshuffle($prize_arr); //配列の順序を入れ替えます
for($i=0;$i
http://www.bkjia.com/PHPjc/814672.html