3

乱数のセットを生成して配列に入れたとしましょう(簡単にするために事前に並べ替えられています)。javascriptを使用して数学を表示します。

var vals = new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,...,10000);

次に、ループで、インデックスとして機能する乱数を作成しました。

for(i=0;i<10000;i++){
    var random_index = Math.floor(Math.random() * 10000);
    var result = vals[random_index];
}

あらゆる種類のグラフでこの出力を見ると、結果(そのループを十分に反復すると、かなりランダムでバランスが取れているように見えます)

私が欲しいのは、各アクセスの結果がより小さな数を優先することです。これは偶然にも、より低いインデックスの配列要素です。

視覚的な例として、花火の破片が落ちた地図にプロットしようとしていると想像してください。それらの断片のほとんどは、近くにランダムに分類されますが、中央に向かってより集中します。これは、別の次元を考慮に入れ、物理学を使用して結果を達成するため、少し複雑な例ですが、同じ原理です。

random_index変数に対してどのような操作を実行して、数値を小さくする必要がありますか?

4

2 に答える 2

2

通常のアプローチ(たとえば、ここで説明する)は、必要な分布関数を定義してから、2つのアプローチのいずれかを使用して、一様分布の確率変数を目的の分布の確率変数に変換することです。ターゲット分布が十分に単純であれば、逆変換サンプリングを使用できます。

分布関数がどのようなものかを気にしない場合は、値を小さくするだけで、[最小2、最大2 ]の範囲で均一なrvを生成し、その平方根をrvとして使用するのが簡単な方法です。

于 2011-12-14T20:35:45.720 に答える
0

できることはいくつもあります。

例えば:

Math.floor(Math.sqrt(Math.random() * 10000^2));

本当の問題は、どのような配布が必要ということです。

于 2011-12-14T20:36:22.287 に答える