2016-08-29 6 views
0
<?php 
function factorial($number) 
{ 
    if ($number < 2) { 
     return 1; 
    } else { 
     return ($number * factorial($number-1)); 
    } 
} 

function poisson($occurrence,$chance) 
{ 
    $e = exp(1); 

    $a = pow($e, (-1 * $chance)); 
    $b = pow($chance,$occurrence); 
    $c = factorial($occurrence); 

    return $a * $b/$c; 
} 

$x = 2.5; 
$y = 1.5; 
$calAll = array(); 
for($z = 0 ; $z <= 9 ; $z++) { 
    array_push($calAll, 
       (poisson($z,$x) * poisson(0,$y))*100, 
       (poisson($z,$x) * poisson(1,$y))*100, 
       (poisson($z,$x) * poisson(2,$y))*100 
      ); 
} 
$value = max($calAll); 
$key = array_search($value, $calAll); 
print_r($calAll) . "\n"; 
echo "max =",$value , " key =",$key . "\n";; 
?> 

返された配列の最大値から$ zと数値0,1または2を見つけることができますか? 私はこのアクションを実行するためにExcelを使用し、私は最大値= 8.5854557290941のために$ zは2であり、これはPHPでこれを達成する方法1であることが判明しましたか?forループから値を見つけよう

+3

「while」ループはどこですか? – chris85

+0

'$ z'とは何ですか?あなたは何が必要ですか? – Aaron

+0

@ chris85申し訳ありませんループ私はタイトルを更新しました – vivi

答えて

0

配列要素を$zの値ごとに3群に押されるので、$zは3で割った指数の整数部分であり、$occurrenceは余りです。

$z = floor($key, 3); 
$occurrence = $key % 3; 
関連する問題