ホームページ >バックエンド開発 >C++ >Box-Muller 変換を使用して C/C でランダムな法線偏差を生成するにはどうすればよいですか?

Box-Muller 変換を使用して C/C でランダムな法線偏差を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 18:48:15790ブラウズ

How Can I Generate Random Normal Deviates in C/C   Using the Box-Muller Transform?

C/C でのランダム正規偏差の生成

正規分布に従う乱数の生成は、さまざまなアプリケーションで一般的なタスクです。 C/C では、Boost のような外部ライブラリに依存せずにこれを達成するためのアプローチがいくつかあります。

広く使用されている方法の 1 つは、Box-Muller 変換です。これは、2 つの均一に分布した乱数を 2 つの正規分布した乱数に変換します。乱数。数式は次のとおりです。

x = sqrt(-2 * ln(u1)) * cos(2 * M_PI * u2)
y = sqrt(-2 * ln(u1)) * sin(2 * M_PI * u2)

ここで、u1 と u2 は [0, 1] の範囲内に一様に分散された乱数です。単一のランダムな法線偏差を生成するには、ボックス-ミュラー変換を使用してペアを生成し、一方を返し、もう一方を後で使用するために保存します。

以上がBox-Muller 変換を使用して C/C でランダムな法線偏差を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。