试图用drand48生成一个n大小的矩阵,其中包含所有随机数,但它只返回0,出于某种原因,编译器警告我,当手册页明确指出应该是double时,drand将返回int,有人能告诉我我我做错了什么吗?函数被称为./matrix 4
,其中第二个参数是nxn矩阵的n,im是在mint linux上开发的
int main(int argc, char* argv[]){
int matrixSize = atoi(argv[1]);
printf("matrixsize %d\n", matrixSize);
//create matrix of n size
int mat[matrixSize][matrixSize],i,j;
for(i = 0; i < matrixSize; ++i){
for(j = 0; j < matrixSize ; ++j){
mat[i][j] = drand48();
printf("%f\n", mat[i][j]);
}
printf("\n");
}
}
最佳答案
是的,drand48
返回双倍。问题是您正在将结果存储到int
s的数组中
drand48()和erand48()函数返回非负的双精度浮点值,在区间[0.0,1.0]上均匀分布。
由于代码声明了一个二维数组drand48
s,int
的所有结果都被截断为0,因为函数返回的值是0-1。
将数组声明更改为:
//create matrix of n size
double mat[matrixSize][matrixSize],i,j;
关于c - drand48返回全0吗? (C),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29902445/