#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main()
{
int N = 10000,i;
double *z, sum = 0.0, sum_sq = 0.0;
z
= (double *)malloc(N
* sizeof(double)); if (z == NULL)
{
printf("Memory allocation failed!\n"); return 1;
}
for (i = 0; i < N; i += 2) {
double u1
= (double)rand() / RAND_MAX
;
double u2
= (double)rand() / RAND_MAX
;
double theta = 2.0 * 3.14 * u2;
double z1
= r
* cos(theta
); double z2
= r
* sin(theta
);
z[i] = z1;
if (i + 1 < N) z[i + 1] = z2;
}
for (i = 0; i < N; i++)
{
sum += z[i];
sum_sq += z[i] * z[i];
}
double mean = sum / N;
double variance = (sum_sq / N) - (mean * mean);
double stddev
= sqrt(variance
);
printf("Generated %d normal random numbers (mean=0, stddev=1)\n", N
);
printf("Mean = %.6f\n", mean
); printf("Std Dev = %.6f\n", stddev
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHRpbWUuaD4KCmludCBtYWluKCkgCnsKICAgIGludCBOID0gMTAwMDAsaTsKICAgIGRvdWJsZSAqeiwgc3VtID0gMC4wLCBzdW1fc3EgPSAwLjA7CgoKCiAgICB6ID0gKGRvdWJsZSAqKW1hbGxvYyhOICogc2l6ZW9mKGRvdWJsZSkpOwogICAgaWYgKHogPT0gTlVMTCkgCiAgICB7CiAgICAgICAgcHJpbnRmKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQhXG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSArPSAyKSB7CiAgICAgICAgZG91YmxlIHUxID0gKGRvdWJsZSlyYW5kKCkgLyBSQU5EX01BWDsKICAgICAgICAKICAgICAgICBkb3VibGUgdTIgPSAoZG91YmxlKXJhbmQoKSAvIFJBTkRfTUFYOwoKICAgICAgICBkb3VibGUgciA9IHNxcnQoLTIuMCAqIGxvZyh1MSkpOwogICAgICAgIGRvdWJsZSB0aGV0YSA9IDIuMCAqIDMuMTQgKiB1MjsKCiAgICAgICAgZG91YmxlIHoxID0gciAqIGNvcyh0aGV0YSk7CiAgICAgICAgZG91YmxlIHoyID0gciAqIHNpbih0aGV0YSk7CgogICAgICAgIHpbaV0gPSB6MTsKICAgICAgICBpZiAoaSArIDEgPCBOKSB6W2kgKyAxXSA9IHoyOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspIAogICAgewogICAgICAgIHN1bSArPSB6W2ldOwogICAgICAgIHN1bV9zcSArPSB6W2ldICogeltpXTsKICAgIH0KCiAgICBkb3VibGUgbWVhbiA9IHN1bSAvIE47CiAgICBkb3VibGUgdmFyaWFuY2UgPSAoc3VtX3NxIC8gTikgLSAobWVhbiAqIG1lYW4pOwogICAgCiAgICBkb3VibGUgc3RkZGV2ID0gc3FydCh2YXJpYW5jZSk7CgogICAgcHJpbnRmKCJHZW5lcmF0ZWQgJWQgbm9ybWFsIHJhbmRvbSBudW1iZXJzIChtZWFuPTAsIHN0ZGRldj0xKVxuIiwgTik7CiAgICAKICAgIHByaW50ZigiTWVhbiAgICAgPSAlLjZmXG4iLCBtZWFuKTsKICAgIHByaW50ZigiU3RkIERldiAgPSAlLjZmXG4iLCBzdGRkZXYpOwogICAgZnJlZSh6KTsKCiAgICByZXR1cm4gMDsKCgkKCQp9