Я работал над функцией генерации гауссовских распределенных случайных случайных значений от нуля до 1. Этот сайт очень помог, поскольку я в основном скопировал алгоритм для полярной формы, чтобы понятьпроцедура, но у меня возникают проблемы с сохранением значения от 0 до 1, включая 0, но исключая 1. Я считаю, что математическая запись для этого [0, 1), если я прав.Любое понимание, которое вы могли бы предоставить, было бы здорово.В Unix это компилируется с;gcc fileName .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;
}