確率分けして表示していますが
4と5が出ません
4が出る確率は10%
5が出る確率は5%
何か式が間違ってるんでしょうか?
<?php function generateRarity() { // 1から100までの乱数を生成 $randomNumber = mt_rand(1, 100); // 各数字の確率を設定 if ($randomNumber <= 50) { // 1が出る確率は50% return 1; } elseif ($randomNumber <= 50 + 35) { // 2が出る確率は35% return 2; } elseif ($randomNumber <= 50 + 35 + 20) { // 3が出る確率は20% return 3; } elseif ($randomNumber <= 50 + 35 + 20 + 10) { // 4が出る確率は10% return 4; } else { // 5が出る確率は5% return 5; } } // 乱数を生成して出力 for ($i = 0; $i < 3000; $i++) { echo generateRarity(); echo "<br>"; } ?>
> 4と5が出ません
> 何か式が間違ってるんでしょうか?
間違っていますね。
ご提示のモノだと、4以上が出るのは、
$randomNumber <= 50 + 35 + 20
が成り立たなかった場合です。
(つまり、$randomNumber が105を超えた場合)
ですが、
$randomNumber = mt_rand(1, 100);
ですから、$randomNumber は100までですから、そんな事にはなりません。
お考えの様な確率では設定できないですから、見直しが必要でしょう。
__今回のアルゴリズムで計算するなら
__全ての「数字が出る確率」を合計したら100%になる様に
ベストアンサーにお選びの回答は、「確率」と言うモノを勘違いしていると思います。
アレは一定の抽選回数で全てを払い出さなければいけない特殊な状況下でのお話で、「確率」とは毎回毎回変化しないモノを言います。
回答3件
あなたの回答
tips
プレビュー