
	                	                 
stats_rand_gen_ipoisson 함수는 Poisson 분포를 생성하는 함수입니다. 이 함수의 인자 중 lamda 값은 평균값을 의미합니다. lamda 값이 2 인 경우, 2를 평균으로 하는 Poisson 분포를 생성해야 합니다.
예를 들어, lamda = 2 인 경우, Poisson 분포를 생성하는 코드는 다음과 같습니다.
#hostingforum.kr
php
function stats_rand_gen_ipoisson($lamda, $n) {
    $x = array();
    for ($i = 0; $i < $n; $i++) {
        $x[] = poisson_distribution($lamda);
    }
    return $x;
}
function poisson_distribution($lamda) {
    $L = exp(-$lamda);
    $k_max = 100;
    $prob = array();
    for ($k = 0; $k <= $k_max; $k++) {
        $prob[] = ($L * pow($lamda, $k)) / factorial($k);
    }
    $prob = array_map(function($value) use ($L) {
        return $value + $L;
    }, $prob);
    $prob = array_map(function($value) use ($prob) {
        return $value / array_sum($prob);
    }, $prob);
    $rand = mt_rand(0, 1000000) / 1000000;
    $cum_prob = 0;
    for ($k = 0; $k <= $k_max; $k++) {
        $cum_prob += $prob[$k];
        if ($rand < $cum_prob) {
            return $k;
        }
    }
    return $k_max;
}
function factorial($n) {
    $result = 1;
    for ($i = 2; $i <= $n; $i++) {
        $result *= $i;
    }
    return $result;
}
$lamda = 2;
$n = 10;
$x = stats_rand_gen_ipoisson($lamda, $n);
print_r($x);
이 코드는 lamda = 2 인 경우, 10 번의 시뮬레이션을 통해 생성된 Poisson 분포를 출력합니다.
2025-03-11 21:29