perlで正規分布
乱数の出力はボックスミューラー法。
#!/usr/bin/perl
$Pi = 3.14159265359;
sub RandBoxMuller {
my ($u, $sigma) = @_;
my ($r1, $r2) = (rand(), rand());
while ($r1 == 0) { $r1 = rand(); }
return ($sigma * sqrt(-2 * log($r1)) * sin(2 * $Pi * $r2)) + $u;
}
コメント