Box-Muller Transform
ボックス=ミュラー法
ウィキペディアのSVG図がインタラクティブですごいので必見です(2022-11)
式
$ X・$ Yがそれぞれ独立な一様分布のとき、
$ Z_1 = \sqrt{-2 \log X} \cos(2 \pi Y)
$ Z_2 = \sqrt{-2 \log X} \sin(2 \pi Y)
$ Z_1・$ Z_2いずれも、$ \mu = 0・$ \sigma = 1の正規分布(標準正規分布)
さらに、 $ \sigma Z_1 + \mu とかやればどんな正規分布も作れるよ
GLSL
code:glsl
vec2 boxMuller(vec2 xi) {
float t = TAU * xi.y;
return sqrt(-2.0 * log(xi.x)) * vec2(cos(t), sin(t));
}