ホームページ  >  記事  >  バックエンド開発  >  PHP および JS 宝くじ当選確率アルゴリズム

PHP および JS 宝くじ当選確率アルゴリズム

不言
不言オリジナル
2018-07-06 16:21:251768ブラウズ

この記事では主に PHP と JS の勝率のアルゴリズムを紹介します。これには一定の参考値があります。今、それを共有します。必要な友人は、

古典的な確率アルゴリズムを参照してください。

これで、配列 [10, 20, 30, 40] ができました。

対応する当選確率は、特別賞が 10%、一等賞が 20%、二等賞が 30%、三等賞が 40%、合計 100% であると仮定します。

アルゴリズムが開始すると、値 $value が配列から選択され、次に数値 $rand が 1 ~ 100 の確率空間からランダムに選択されます。

$value と $rand を比較し、$rand が $value の確率範囲内にある場合は、$value に対応するキーを直接返します。

そうでない場合は、確率空間の値から $value 値を減算します。

この例では、1回目の判定後に10が減算され、2回目は1~90の範囲でフィルタリングされることになります。

最後までフィルタリングすると、要件を満たす数値が必ず存在します。

それは箱の中のものに触れることと同じです。

最初のものは触っていません、二番目も触っていません、そして三番目も触っていません、そして最後のものは触っているに違いありません。

このアルゴリズムはシンプルで非常に効率的です。

PHP 実装
<?php
    function getRand($arr)
    {
        $result = &#39;&#39;;
        //概率数组的总概率精度
        $sum = array_sum($arr);
        //概率数组循环
        foreach ($arr as $key => $value) {
            $rand = mt_rand(1, $sum);
            if ($rand <= $value) {
                $result = $key;
                break;
            } else {
                $sum -= $value;
            }
        }
        unset ($arr);
        return $result;
    }
使用范例:

$a = [10, 20, 30, 40];
// 输出3的概率最大
echo &#39;PHP:&#39; . getRand($a);
Javascript 実装
<script>
    function getRand(arr) {
        var result = 0;
        var sum = arr.reduce(function(a, b) {
            return a + b;
        });

        for (index in arr) {
            rand = Math.round(Math.random() * (sum - 1) + 1);
            if (rand <= arr[index]) {
                return index;
            } else {
                sum -= arr[index];
            }
        }

        return result;
    }

    // 使用示例,输出2的概率最大
    var a = [10, 20, 30, 40];
    document.write(&#39;<br />Javascript:&#39; + getRand(a));
</script>
使用范例:

    // 使用示例,输出3的概率最大
    var a = [10, 20, 30, 40];
    document.write(&#39;<br />Javascript:&#39; + getRand(a));

上記がこの記事の全内容です。みんなの学習に役立ちます。 ヘルプ、関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

PHP を使用して最新のフォームをすばやく生成する方法

php では、shmop 関数を使用して共有フォームを作成するだけですメモリを節約し、サーバーの負荷を軽減します
#

以上がPHP および JS 宝くじ当選確率アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。