将 2D 数组随机数生成器传递到主C++

Passing 2D array Random Number Generator into main with C++

本文关键字:C++ 2D 数组 随机数生成器      更新时间:2023-10-16

大家好,我对C++很陌生,想知道你们是否可以帮助我。现在我只是按照书本和老师告诉我的去做,所以有些东西可能看起来不同。

我想做的是让我的空随机生成器将数字放入我的 2D 数组中,然后它进入 main。然后我让它进入我的显示功能,但由于某种原因我无法让它正常工作。你们能帮帮我吗?

编辑:好的,我认为这与我的随机数生成器没有将数字放入数组但不确定原因有关。由于我的数字生成器可以使用 1D 数组查找。

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
//Globral Varaibles Must be on top 
const int max = 100;
const int min = 1;
const int COL = 4;
const int Rows = 3;
//Functions
void Population(int Array[][COL], int size);
void Show(const int Array[][COL], int max);
int main()
{
     int a[3][4];
     Population(a, Rows);
     Show(a, Rows);
}
void Population( int Array[][COL], int size)
{
    for (int index = 0; index < Rows; index++)
    {
        for (int Count = 0; Count < COL; Count++)
        {
               unsigned seed = time(0);
               Array[index][Count] = (rand() % (max - min + 1)) + min;
        }
    }
}
void Show(const int a[][COL], int Rows)
{
    for (int i = 0; i < Rows; i++)
    {
        for (int J = 0; J < COL; J++)
        {
            cout << setw(4) << a[i][J] << endl;
        }
    }
    cout << endl;
    cout << endl;
}

每次在 population() 中输入第二个 for 循环时,您似乎都在播种随机数生成器。 您应该只在程序开头附近播种一次随机数生成器。

尝试从 population() 中删除种子行,改用

srand(time(NULL));

在 main() 的开头

啊,我想出了问题。我一直错误地将显示为一个巨大的列,而不是将其分为行和列。

我必须在a[i][J]部分之后留出一个小空间,以便可以将其分成行和列。

cout << setw(4) << a[a][J] << " ";

That_Knight_Guy感谢您的建议。现在我的生成器终于放出了随机数。