我需要幫助以使我的概率賠率更接近低百分比的測(cè)試結(jié)果。我所擁有的似乎適用于 1% 或更高的百分比,但我需要它適用于非常低的百分比,例如 0.02%(低至小數(shù)點(diǎn)后 4 位)。在運(yùn)行 1000-100000 次測(cè)試后,任何低于 1% 的結(jié)果往往最終有大約 1% 的概率,結(jié)果相似。示例結(jié)果ID Odds Test Total Test Odds1 60.0000 301773 60.3546%2 30.0000 148360 29.672%3 9.9800 44897 8.9794%4 0.0200 4970 0.994%功能// $values = [1,2,3,4]// $weights = [60.0000,30.0000,9.9800,.0200]private function getRandom($values, $weights){ $count = count($values); $i = 0; $n = 0; $num = mt_rand(0, array_sum($weights)); while($i < $count) { $n += $weights[$i]; if($n >= $num) break; $i++; } return $values[$i]; }
1 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
mt_rand
返回一個(gè)整數(shù),因此將其與 0.02 進(jìn)行比較實(shí)際上與將其與 1 進(jìn)行比較是相同的。因此,對(duì)于小于 1% 的權(quán)重,您總是得到大約 1%。嘗試$num
像這樣計(jì)算:
$num = mt_rand(0, array_sum($weights) * 100) / 100;
- 1 回答
- 0 關(guān)注
- 197 瀏覽
添加回答
舉報(bào)
0/150
提交
取消