2013-04-20 121 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 . ' %'; 

?> 
相关问题