平均ゼロ、分散 2.25 のガウス分布で離散乱数 (1000 アンサンブルの場合) を生成したいと考えています。本NUMERICAL RECIPES in Fortran 90、第 7 章、セクション 7.2 で、gasdev
これに使用される関数を見ましたが、この関数の使用方法がわかりません。
アンサンブルの数と平均と分散をどのように使用できますか?
ありがとうございました
平均ゼロ、分散 2.25 のガウス分布で離散乱数 (1000 アンサンブルの場合) を生成したいと考えています。本NUMERICAL RECIPES in Fortran 90、第 7 章、セクション 7.2 で、gasdev
これに使用される関数を見ましたが、この関数の使用方法がわかりません。
アンサンブルの数と平均と分散をどのように使用できますか?
ありがとうございました
IMO、NR から関数を使用する方法は、NR 自体に記述するのが最適です。
正規分布の実数を生成する必要がある場合は、「Box-Muller 変換」をグーグルで検索するか、直接Wiki ページおよび/または SO に関する多数の質問と回答にアクセスしてください。
あなたの要件が整数を生成することである場合(離散乱数について尋ねることを意味しましたか?)、最も簡単な方法は cdf を計算することです。
gasdev
0.0
の平均と分散を持つ正規分布確率変数を返し1.0
ますN(0, 1)
。目的の分布に一致させるために、結果を分散でスケーリングする必要があります。x
がN(0, 1)
( によって返されるgasdev
) である場合、y = a + b*x
はN(a, b^2)
、つまり の平均a
と の分散を持つ正規分布確率変数であることに注意してくださいb^2
。
(ところで、これが宿題の場合は、そのように適切にタグ付けする必要があります)