我想在PHP中創建一個腳本,它將決定我是否失敗或成功的概率。例如,90%的時間返回true
(或「成功」),false
或其他10%返回「失敗」。基本上,我成功的概率是9/10,而我失敗的概率是1/10。Provability成功或失敗
我試圖使用rand()
函數來查看數字是否匹配,但是它的概率太低。如果你們能幫助我獲得一個或開始一個,我將不勝感激。謝謝。 :)
我想在PHP中創建一個腳本,它將決定我是否失敗或成功的概率。例如,90%的時間返回true
(或「成功」),false
或其他10%返回「失敗」。基本上,我成功的概率是9/10,而我失敗的概率是1/10。Provability成功或失敗
我試圖使用rand()
函數來查看數字是否匹配,但是它的概率太低。如果你們能幫助我獲得一個或開始一個,我將不勝感激。謝謝。 :)
$rand = rand(1,100);
$probability = 90;
$succeed = $rand <= $probability;
這是非常簡單的,但也許這可以幫助你......
// Array with 9 S's and one F -> 90% change of getting an S.
$a = array('S', 'S', 'S', 'S', 'S', 'S', 'S', 'S', 'S', 'F');
echo $a[array_rand($a)];
好的,但我怎麼會從90到數組?我會做一個循環插入儘可能多的F的必要 – Eduardop911 2013-04-20 17:07:42
下面是基於足球俱樂部的回答另一個版本。
這測試概率10000次,並提供約10%的失敗率。
<?php
$probability = 90;
$fails = 0;
$succeeds = 0;
for($i = 0; $i < 10000; $i++) {
$rand = rand(1, 100);
if ($rand <= $probability) {
$succeeds++;
}
else {
$fails++;
}
}
echo 'Fail ratio: ' . ($fails/$succeeds) * 100 . ' %';
?>
這將在技術上給你1/100的機會。 – Eduardop911 2013-04-20 17:10:14
哼哼,我用「<=」,而不是「=」。 $蘭特小於或等於90的機會不會有90/100的機會嗎? – 2013-04-20 17:13:29
@ Eduardop911 F.C.是正確的。 http://codepad.org/1XMHKim0 – Eric 2013-04-20 17:15:01