luxの日記: perl : 正規分布の乱数を得る
日記 by
lux
正規乱数(正規分布の乱数)を作る方法です。
ボックス・ミューラーの正規乱数発生法より
$sigma は標準偏差、$m は、中央値です。
3.14159265359 はπ(円周率)です。
sub randn {
my ($m, $sigma) = @_;
my ($r1, $r2) = (rand(), rand());
while ($r1 == 0) { $r1 = rand(); }
return ($sigma * sqrt(-2 * log($r1)) * sin(2 * 3.14159265359 * $r2)) + $m;
}
print &randn(5, 3); # 平均値5、標準偏差3
2002/08/22 の内容より
Perl : 正規分布の乱数を得る More ログイン