1. ホーム
  2. javascript

[解決済み] JavaScript Math.random 正規分布(ガウスベルカーブ)?

2023-08-02 10:52:31

質問

JavaScriptの関数 Math.random が正規分布(対一様分布)を使っているかどうか知りたいです。

そうでない場合、どのように正規分布を使用する数を得ることができますか?インターネット上では、正規分布の数字をランダムに作成するアルゴリズムについて、明確な答えが見つかっていないのです。

私はSchmidt-machine(ドイツの物理学者)を作り直したいと思っています。この機械は 0 か 1 の乱数を生成し、それらは私がガウスのベル曲線としてそれらを描くことができるように正規分布でなければなりません。

例えば、乱数関数は 120 個の数 (0 または 1) を生成し、これらの合計値の平均 (平均値) は 60 近くでなければなりません。

どのように解決するのですか?

JavaScriptの関数Math.randomが正規分布かどうか知りたい。

JavascriptのMath.random ではなく 正規分布(ガウシアンベルカーブ)です。から es 2015, 20.2.2.27 実装に依存するアルゴリズムまたは戦略を使用して、その範囲にわたってほぼ一様な分布で無作為または疑似無作為に選択された、0以上1未満の正の符号を持つ数値の値を返します。この関数は引数を取らないので、nが十分に大きいときに提供されたコレクションは、ほぼ一様な分布を得ることができます。区間内のすべての値は等しい確率で出現します(x軸に平行な直線で、0.0から1.0の間の数を表します)。

正規分布になるような数値を得るにはどうしたらよいでしょうか。

正規分布を持つ数の集まりを得るには、いくつかの方法があります。回答者 マックスウェル・コラード ボックス・ミュラー変換 は,一様分布を正規分布に変換します(そのコードは Maxwell Collardの答え ).

別のstackoverflowの回答に対する回答で 質問 には、他の一様分布から正規分布のアルゴリズムによる回答があります。そのような Ziggurat Ratio-of-uniforms(一様分布の比率)。 CDFの反転 さらに、回答の1つには次のように書かれています: says:

Zigguratアルゴリズムはこのためにかなり効率的ですが、Box-Muller変換はゼロから実装する方が簡単です(そしてめちゃくちゃ遅いわけでもありません)。

そして最後に

<ブロッククオート

私はSchmidt-machine(ドイツの物理学者)を再構築したいのですが、この機械は0または1の乱数を生成し、それらはガウスのベル曲線で描けるように正規分布でなければなりません。

0と1の2つの値しかない場合、ガウス曲線は2つの値を持つ一様分布と同じに見えます。そのため、単純な

function randomZero_One(){
    return Math.round(Math.random());
}

で十分です。これは、ほぼ等しい確率の値0と1で擬似的に返されるでしょう。