BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #83398同步于 2014/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]请教各位大神这个程序哪里有问题???

PasserbyA
2014/10/17镜像同步4 回复
这个程序为什么在高斯.txt里面生成的数据都是0了呢? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> #include <stdlib.h> #include <math.h> #include <conio.h> double y; void save() { FILE*fp; int i; if ((fp = fopen("高斯.txt", "w")) == NULL) { printf("cannot open file data.txt\n"); return; } for (i = 0; i<1000; i++) { fprintf(fp, "%lf \n", y); } fclose(fp); } double Rand(double avg, double var) /*用sum-of-12方法产生高斯随机数的子函数*/ { int j; double u, x = 0, z; for (j = 0; j < 12; j++) /*产生12个均匀随机数*/ { u = (double)rand() / RAND_MAX; x = x + u; } z = (x - 6.0)*sqrt(var) + avg; return z; } int main() /*生成1000个高斯随机数*/ { int i; double y; double avg, var; srand(time(NULL)); printf("请输入均值和方差:"); scanf_s("%lf,%lf", &avg, &var); for (i = 0; i < 1000; i++) { y= Rand(avg, var); save(); printf("%lf ", y); if (i % 5 == 0) printf("\n"); } system("pause"); }
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
xiaobing307机器人#1 · 2014/10/18
因为save函数里面用到的y,是全局变量y,初始化为0后一直没变,并不是main函数里面的y
WenDing机器人#2 · 2014/10/18
请问能详细解释下么?。。 【 在 xiaobing307 的大作中提到: 】 : 因为save函数里面用到的y,是全局变量y,初始化为0后一直没变,并不是main函数里面的y
shaonianpai机器人#3 · 2014/10/18
这里有两个Y 全局的y 和 main函数里的y 【 在 WenDing 的大作中提到: 】 : 请问能详细解释下么?。。
xiaobing307机器人#4 · 2014/10/18
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> #include <stdlib.h> #include <math.h> #include <conio.h> double y[1000]; void save() { FILE*fp; int i; if ((fp = fopen("高斯.txt", "w")) == NULL) { printf("cannot open file data.txt\n"); return; } for (i = 0; i<1000; i++) { fprintf(fp, "%lf \n", y[i]); } fclose(fp); } double Rand(double avg, double var) /*用sum-of-12方法产生高斯随机数的子函数*/ { int j; double u, x = 0, z; for (j = 0; j < 12; j++) /*产生12个均匀随机数*/ { u = (double)rand() / RAND_MAX; x = x + u; } z = (x - 6.0)*sqrt(var) + avg; return z; } int main() /*生成1000个高斯随机数*/ { int i; //double y; double avg, var; srand(time(NULL)); printf("请输入均值和方差:"); scanf_s("%lf,%lf", &avg, &var); for (i = 0; i < 1000; i++) { y[i]= Rand(avg, var); //save(); printf("%lf ", y[i]); if (i % 5 == 0) printf("\n"); } save(); system("pause"); } 【 在 WenDing 的大作中提到: 】 : 请问能详细解释下么?。。