gpt4 book ai didi

c - 数组未按应有的方式随机化,且值为负数

转载 作者:行者123 更新时间:2023-11-30 19:30:49 26 4
gpt4 key购买 nike

我尝试使用 srand 函数存储随机数,并使用循环将值存储在二维数组中。当我打印出数组时,它每次都有相同的值,并且数字通常为负值,这很奇怪,而且即使 srand 函数存在,它们也保持不变。

#include <stdio.h>
#include <math.h>
#include <time.h>

#define NROW 13
#define NCOL 11

int main()
{
void disp_array(int a[NROW][NCOL]);

int ar[NROW][NCOL];
int i, j;

for (i = 0; i < NROW; i++) {
for (j = 0; j < NCOL; j++) {
ar[NROW][NCOL] = (rand() % 101);
}
}
disp_array(ar);

return 0;
}

void disp_array(int a[NROW][NCOL])
{
int i;
int j;

for (i = 0; i < 7; i++) {
for (j = 0; j < 5; j++) {
printf("Value at row %d column %d is %d \n", i, j, a[i][j]);
}
}
}

最佳答案

首先,语句 ar[NROW][NCOL]= (rand()%101); 是不正确的,因为每次您将数据分配给同一个 ar[NROW][ NCOL]NROW & NCOL 没有变化。

所以将其替换为ar[i][j]= (rand()%101);

其次,要打印数组元素,像这样打印

for (i=0;i<NROW;i++){  /* don't use < 5 or < 7 if you have NROW & NCOL*/
for(j=0;j<NCOL;j++){
ar[i][j]= (rand()%101);
}
}

最后,在语句 ar[i][j]= (rand()%101); 中,如果不更改,rand() 会生成相同的随机数种子值。阅读 rand()srand() 的手册页。例如,在调用 rand() 之前使用 srand(getpid())

srand(getpid());/*getpid() returns process id and 
every time process manager generates different process id*/

查看此http://man7.org/linux/man-pages/man3/rand.3.htmlhttps://linux.die.net/man/3/srand

关于c - 数组未按应有的方式随机化,且值为负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com