2013-04-20 173 views
-1

我想在PHP中創建一個腳本,它將決定我是否失敗或成功的概率。例如,90%的時間返回true(或「成功」),false或其他10%返回「失敗」。基本上,我成功的概率是9/10,而我失敗的概率是1/10。Provability成功或失敗

我試圖使用rand()函數來查看數字是否匹配,但是它的概率太低。如果你們能幫助我獲得一個或開始一個,我將不勝感激。謝謝。 :)

回答

3
$rand = rand(1,100); 
$probability = 90; 

$succeed = $rand <= $probability; 
+0

這將在技術上給你1/100的機會。 – Eduardop911 2013-04-20 17:10:14

+0

哼哼,我用「<=」,而不是「=」。 $蘭特小於或等於90的機會不會有90/100的機會嗎? – 2013-04-20 17:13:29

+0

@ Eduardop911 F.C.是正確的。 http://codepad.org/1XMHKim0 – Eric 2013-04-20 17:15:01

0

這是非常簡單的,但也許這可以幫助你......

// 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)]; 
+0

好的,但我怎麼會從90到數組?我會做一個循環插入儘可能多的F的必要 – Eduardop911 2013-04-20 17:07:42

0

下面是基於足球俱樂部的回答另一個版本。

這測試概率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 . ' %'; 

?>