10

私のパーリンノイズ関数(0.75の永続性で6オクターブの3Dシンプレックスを合計する)は、doublesの2D配列配列を生成します。

これらの数値はそれぞれ[-1、1]に正規化され、平均は0になります。例外を回避するためにクランプします。これは浮動小数点の精度の問題によるものと思いますが、スケーリング係数は十分に適切であると確信しています。理想的なケースでは、ノイズ出力をまさにこの近傍に制限します。

とにかく、それがすべての詳細です。重要なのは、ここに256x256のノイズの配列があります。

ここに画像の説明を入力してください

通常の近似のヒストグラムは次のようになります。

ここに画像の説明を入力してください

Matlablillietestは、Lillieforsテストを適用して、一連の数値が正規分布に由来するかどうかを判断する関数です。私の結果は繰り返し1でした。これは、これらの数値が正規分布していないことを意味します。

f(x)ノイズ関数の値のリストに適用すると、結果が均一に分布しているように見える関数が必要です。

この関数をC#で実装可能にし、実行に数分もかからないようにしたいと思います。

繰り返しになりますが、数値がどこから来ているかは問題ではありません(問題は、ある分布を別の分布に変換すること、具体的には通常のような分布を均一に変換することです)。それにもかかわらず、私のノイズ関数の実装はこれこれに基づいています。上記の値の配列はここにあります。

4

2 に答える 2

8

奇妙なことに、私はちょうどあなたの質問について記事を書きました:

http://ericlippert.com/2012/02/21/generating-random-non-uniform-data/

ここでは、一様分布を他の分布に変換する方法について説明しますが、もちろん、同様の手法を使用して他の分布を変換することもできます。

于 2012-03-03T21:52:55.457 に答える
2

次の(関連する)テクニックのいずれかに興味があるでしょう。

于 2012-03-03T21:06:17.250 に答える