以双格式创建随机数,eclipse停止工作

时间:2014-11-01 15:01:02

标签: c++ c

生成随机数0-1,当我输入的输入数小于4时,代码工作正常。但是当输入数字超过4时,eclipse就会停止工作。我的代码有什么问题

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double ran(double x0, double x1){
return x0+(x1-x0)*rand()/((double)RAND_MAX);
}
int main(void) {
int a,i;
double *b;
printf("input the size\n");
scanf("%d", &a);
b=(double*)malloc(sizeof(int)*a);
srand((unsigned)time(NULL));
for(i=0;i<a;i++)
{
    b[i]=ran(0,1);
    printf("\n %f", b[i]);
}
free (b);
return 1;

}

1 个答案:

答案 0 :(得分:1)

double大于整数。 double是8个字节,而整数是4个字节。 你应该替换

b = (double*)malloc(sizeof(int)*a);

b = (double*)malloc(sizeof(double)*a);

甚至更好(感谢Lưu Vĩnh Phúc

b = malloc(a * sizeof b[0]);