2013-04-20 7 views
-1

Я хочу создать скрипт в PHP, который определит, не удалось ли мне или не удалось с вероятностью. Например, возвращение true (или «успех») 90% времени и false или «отказ» для остальных 10%. В принципе, есть вероятность 9/10, что я преуспел, и 1/10, что я потерпел неудачу.Провайдер успеха или неудача

Я пытался использовать функцию rand(), чтобы увидеть, совпадают ли цифры, но вероятности слишком малы. Я был бы признателен, если вы, ребята, можете помочь мне получить один или начать на одном. Благодарю. :)

ответ

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

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

, это технически даст вам 1/100 шансов. – Eduardop911

+0

гул, я использую «<=», а не «=». Разве я не могу получить 90/100 шансов, что $ rand меньше или равен 90? –

+0

@ Eduardop911 F.C. верно. http://codepad.org/1XMHKim0 – Eric

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

0

Вот еще одна версия, основанная на ответе F.C. в.

Это проверяет вероятность 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 . ' %'; 

?> 
Смежные вопросы