私はゼロと1の間のガウス分散ランダム乱数を生成する関数に取り組んできました.このウェブサイトはここにあり、手順を理解するためにPolar Formのアルゴリズムを基本的にコピーしたため、非常に役立ちましたが、 0 を含み 1 を除く 0 と 1 の間の値。私が正しければ、これの数学表記は [0, 1) だと思います。あなたが提供できる洞察は素晴らしいでしょう。Unix では、これは次のようにコンパイルされます。gccファイル名.c -lm
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main()
{
int i;
float x, w;
for (i=0; i<50; i++)
{
do {
x = 2.0 * ( (float)rand() / (float)RAND_MAX ) - 1.0;
w = x * x;
}while (w >= 1.0);
w = (float)sqrt( (-2.0 * log( w )) / w );
printf("%f\n", x*w);
}
return 0;
}