尝试使用drand48制作一个包含所有随机数的n大小的矩阵,但它只返回0,并且出于某种原因编译器给出了一个警告,当手册页清楚地表明它应该是双重时,drand返回整数,有人可以告诉我,我做错了什么?函数被称为./matrix 4
,其中第二个arg是n的nxn矩阵,我在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");
}
}
答案 0 :(得分:2)
是的,drand48
确实会返回双打。问题是您将结果存储到int
的数组中。来自drand48
的文档:
drand48()和erand48()函数返回非负的,双精度的浮点值,均匀分布在区间[0.0,1.0]上。
由于您的代码声明了int
的二维数组,因此drand48()
的所有结果都被截断为0,因为该函数返回的值为0-1。
将数组声明更改为:
//create matrix of n size
double mat[matrixSize][matrixSize],i,j;