c - 用 C/平均值/最大值中的随机数填充定义的二维数组

标签 c arrays random

我创建了这个 2D 21x21 数组,其所有值都设置为 -1。我编写它是为了打印地址和值,但不知何故它只从 [6][19] 开始,为什么?

我想要做的是将同一数组中的一些 -1 值替换为 0 到 100 之间的随机数。我知道我需要用 srand 播种它,但我在连接函数时遇到问题,因为我是 C 的初学者。

编辑1:

现在我可以打印整个数组并用随机数填充它。对于 -1 值,我直接分配了这种情况,这很好。

我现在正在尝试找到所有值的平均值和最大数量,所以我拥有的是:

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


int main()
{

int a[21][21], i , j;

for (i = 0; i < 21; i++)
{
    for ( j = 0; j < 21; j++)
    {
        a[i][j] = GetRand(0, 100);
        a[7][15] = -1;
        a[10][6] = -1;
        a[13][5] = -1;
        a[15][17] = -1;
        a[17][17] = -1;
        a[19][6] = -1;
        printf("%3d" , a[i][j]);
    }
    printf("\n");
}
return 0;
}



// random seed
int GetRand(int min, int max);
int get() {
 int i, r;
for (i = 0; i < 21; i++)
 {
r = GetRand(0, 100);
printf("Your number is %d \n", r);
 }
 return(0);
 }

int GetRand(int min, int max)
{
static int Init = 0;
int rc;

if (Init == 0)
{
srand(time(NULL));
Init = 1;
}

rc = (rand() % (max - min +1) +min);

return (rc);
}



// average

int avg()

float sum=0.0;

for(i = 0; i <= 21; i = i + 1) {


    for(j = 0; j <= 21; j = j + 1){


         sum = sum + a[21][21];
     }

printf("The the average number is %.2f\n", sum/21);
}




 //find maximum of all values    

 int *pv = &a[0][0];
 max = min = 0;
 for (i = 1; i < i*j; ++i){
    if (pv[i] > pv[max])
        max =i;
    if (pv[i] < pv[min])
        min = i;
}
printf("The max value is %d in row %d, col %d\n", pv[max], max/j, max%j);


return 0;
}

对于平均函数,编译器告诉我在 i 之前需要一个声明,即“float sum=0.0;”但我还没能解决这个问题。

为了找到最大函数,我还不确定我在那里做什么,我只是对它是如何完成的有一个模糊的想法......我正朝着正确的方向前进吗?

谢谢!

最佳答案

非常简单:只需将 GetRand 函数的结果分配给矩阵条目即可。

关于c - 用 C/平均值/最大值中的随机数填充定义的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345418/

相关文章:

arrays - 检查另一个数组中存在的数组的所有元素

python - 根据概率密度函数 p(x,y,z) 随机填充 3D 网格

java - 使用随机类填充数组,然后打印它的值

python - 是否存在服从本福德定律的随机数分布?

c++ - 在 VC++ 2005 中使用日期时间

c - 如何使用 25519 打开 SSL 1.1.1 ECDH

php - 将关联数组插入mysql表

javascript - 组合两个不同数组中的两个对象

c++ - 如何理解 C++ 中的 MNIST 二进制转换器?

c - 如何在资源管理器中同时打开多个文件?