21xrx.com
2024-11-22 11:04:20 Friday
登录
文章检索 我的文章 写文章
C++实现随机半满二维数组
2023-06-27 19:04:37 深夜i     --     --
C++ 随机 半满 二维数组 实现

随机半满二维数组可以用来模拟稀疏矩阵或者其他需要大量0的矩阵。如果我们手动输入这些0,会浪费不必要的时间和空间。因此,使用C++编写程序来随机生成半满二维数组是非常有必要的。

首先,我们先来讨论一下什么是半满二维数组。一个半满二维数组可以理解为给定一个大小为m*n的二维数组,其中只有p个元素是非零的。那么如何随机生成这个数组呢?

在使用C++生成随机数组时,我们可以利用rand()函数来生成随机数。但是,由于rand()函数生成的随机数是伪随机数,需要使用srand()函数以某一种方式来初始化它。这些函数通常要使用时间戳作为种子来初始化。每次程序运行时,生成的随机数序列都不同。

接下来,让我们来看看一个示例程序,它可以随机生成一个大小为10*10,仅有5个非零元素的半满二维数组:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

  const int m = 10;

  const int n = 10;

  const int p = 5;

  int a[m][n] = {0};

  srand(time(NULL));

  for (int i = 0; i < p; i++) {

    int x = rand() % m;

    int y = rand() % n;

    while (a[x][y] != 0) {

      x = rand() % m;

      y = rand() % n;

    }

    a[x][y] = rand() % 10 + 1; // 生成随机的非零元素

  }

  for (int i = 0; i < m; i++) {

    for (int j = 0; j < n; j++) {

      cout << a[i][j] << " ";

    }

    cout << endl;

  }

  return 0;

}

在这个程序中,我们首先定义了一个大小为10*10的二维数组,并将所有元素初始化为0。然后,我们使用srand()函数初始化rand()函数,然后利用rand()函数生成随机的(non-zero)数组元素。

在生成非零元素时,我们使用while循环来确保随机选取的位置没有被填充过。当我们选中的位置已经被填充时,我们需要再次重复上述操作,直到选中一个未被填充的位置。在选中一个未被填充的位置后,我们使用rand()函数生成一个1到10之间的随机数,并将它赋值给该位置。

最后,我们使用嵌套的for循环来输出随机生成的半满二维数组。

通过这个示例程序,我们可以发现生成半满二维数组并不难,只需要在生成非零元素时注意判断重复即可。当我们需要生成更大的半满二维数组时,只需要将程序中的常量m、n、p修改为所需的值即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复