web-dev-qa-db-ja.com

Random.nextgaussian()は、平均値と標準偏差が異なる分布から値をサンプリングできますか?

これは、Javaと基本的な数学の質問を組み合わせたものです。Random.nextGaussian()のドキュメントには、平均0と標準偏差1の正規分布からサンプリングすることが記載されています。平均と分散が異なる正規分布?

19
darkhipo

短い答えは

Random r = new Random();
double mySample = r.nextGaussian()*desiredStandardDeviation+desiredMean;

たとえば、この回答は次のとおりです: http://www.javamex.com/tutorials/random_numbers/gaussian_distribution_2.shtml

なぜこれが機能するのかはよくわかりませんでしたが、少し調べてみるとわかりました。サンプルポイントの平均は0で、標準偏差は1です。つまり、元のサンプルも独自のZスコア( https://en.wikipedia.org/wiki/Standard_score )です。ウィキペディアから引用すると、「zの絶対値は、生のスコアと母平均間の距離を標準偏差の単位で表します」。式はz =(x-mean)/ stdevなので、デフォルト値はz = xです。サンプルのzスコアを保持したいが、平均と標準偏差を変更したい場合はどうしますか?

z * stdev +平均= x 'ここで、z = xであり、x'は、目的の平均と標準偏差を持つ分布からのサンプルを表します。

40
darkhipo