次に、プログラム内でアルゴリズムを設計します。つまり、ユーザーが一定の確率に従って賞品を獲得できるようにします。まず 2 つの確率アルゴリズム関数を見てみましょう。
アルゴリズム1
if (!isset($arr[$key])) {
$max = array_sum($ps);
foreach ($ps as $k=>$v) {
$v = $v / $max * 10000; (for ($ i = 0; $ i & lt; $ v; $ i ++) $ arr [$ key] [] = $ k; $arr[$key])-1)];
}
アルゴリズム 2
上記のコードは、配列が配列 (100,200,300,400) であると仮定します。 1000。数値はその出現確率の範囲内にありますか? そうでない場合は、k の値から先ほどの数値の確率空間を引いた値が減算されます。この場合、マイナス 100 になります。たとえば、k の値はマイナス 100 です。2 つの数値は 1,900 の範囲内でスクリーニングされます。このようにして、最後まで要件を満たす数が必ず存在します。それは、箱の中の何かに触れるようなものです。最初のものがそこになく、2 つ目も存在せず、3 つ目も存在しない場合は、最後のものが存在するはずです。このアルゴリズムはシンプルで非常に効率的です。重要なのは、このアルゴリズムが以前のプロジェクト、特に大量のデータを含むプロジェクトに適用されているということです。
コードをコピー
コードは次のとおりです:
$prize_arr = array(
'0' => array('id'=>1,'prize'=>'tablet',' v' =>1),
'1' => array('id'=>2,'賞品'=>'デジタルカメラ','v'=>5),
'3' =>4,'賞品' =>'4G USB フラッシュ ドライブ','v'=>12),
'4' => array('id'=>5,'賞品'=>'10Q コイン',' v'=> ;22),
$res['yes'] = $prize_arr[$rid-1]['prize']; //当選賞品
//当選賞品を配列から削除し、データベース検証の場合はここを省略できます。
unset($prize_arr[$rid-1]);
shuffle($prize_arr); //配列を並べ替えます
for($i=0;$i
}
$res['no'] = $pr;
なぜグランプリを受賞できないのですか?
同様の宝くじイベントの多くでは、参加者が大賞を獲得できないことがよくあります。私が宝くじイベントの主催者である場合、それぞれに賞品が異なる 6 つの賞品を設定しました。当選確率、1 等が高級車の場合、当選確率を 0 に設定しましたが、これは何を意味しますか?つまり、どれだけ抽選しても、抽選参加者はこの高級車を手に入れることはできないということだ。そして主催者が毎回残りのマス目を裏返すと、参加者は一等賞が今引いたマス目の隣の数字の下にあるかもしれないことに気づき、自分たちの不運を責めます。本当に運が悪いのでしょうか?実際、参加者がそのマスをめくったとき、プログラムはすでに賞品を決定していましたが、彼が他のマス目をめくって他のマスを見ると、彼が見た賞品は単なる*であり、聴衆と参加者を混乱させました。この記事を読んだ後は、テレビ番組のフリップ宝くじが難しいことが分かると思います。もう二度と 2 色のボールを選ぶためにマシンに行くことはないかもしれません。
http://www.bkjia.com/PHPjc/751513.htmlwww.bkjia.com