全員をテストする質問を考えてみましょう。

WBOY
リリース: 2016-06-13 11:58:52
オリジナル
1095 人が閲覧しました

ここで皆さんにテストする質問があります
ある部隊がくじ引き大会を実施し、賞品は 1 つだけです。
この数字は 5 人しか当選できず、当選確率は 3% です
5 人の当選番号はどのように計算しますか?

-----解決策--------------------------
例を挙げてください 次に、上記の説明はあまり明確ではありません
-----解決策------------- --------
読んでください タイトルの私の理解はこうです。

最初の理解:
1. 当選確率は 3%、
2 のみです。
N*3%=5、N=5/3%=166.6666667、半分の人は存在しないため、人の総数は 166 人になります。

<br /><?php<br />$arr = array(1,1,1,1,1);<br />$arr = array_pad($arr, 166, 0);  // 填充161个号不中奖<br />shuffle($arr);                   // 打乱顺序,使5个中奖的号随机分配在166个号中<br />print_r($arr);<br />?><br />
ログイン後にコピー

2 番目の理解:
最大 5 人が勝つことができます。つまり、勝ちの範囲は 0 ~ 5 人です
その場合、勝つ確率は 3 です%。
誰もが宝くじに当たる確率は 3% ですが、5 人が当選する限り、それ以降は誰も当たりません。
抽選が完了すると、抽選に参加した人数は関係ありません。
<br /><?php<br />function gift(){<br /><br />    static $win=5;<br /><br />    if($win>0){<br />        $tmp = mt_rand(1,33); // 3%<br />        if($tmp==1){<br />            $win--;<br />            return true;<br />        }<br />    }<br />    return false;<br />}<br /><br />// 模拟1000次抽奖<br />for($i=0; $i<1000; $i++){<br />    var_dump(gift());<br />}<br />?><br />
ログイン後にコピー

-----解決策---------------------------- -
SQL で直接実現

select empno , empname from employee order by rand() limit 0,5 
ログイン後にコピー

-----解決策----- ----------------
php の当選確率アルゴリズム。スクラッチ カード、ビッグ ホイール、その他の宝くじアルゴリズムに使用できます
--- ---解決策------------------- -
スクラッチカードは即時賞金です
チップの枚数と当選番号はあらかじめ決まっています
5 / 0.03 = 166.66666666667
利用可能なチップの数は 166 または 167 です
当選番号 rand(1, 166) を 5 回保存します
抽選中、rand(1, 166) を保存する必要があります当選番号は毎回抽選されなくなり、当選確率が低くなります

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート