c++ - 随机数函数未正确随机化 (C++)

标签 c++ random

<分区>

所以我试图创建这个程序,它随机生成一个 10 x 10 的随机整数矩阵,从 0 到 2。问题是程序总是给出相同的数字集。这是代码:

#include <iostream>
#include <stdlib.h>

using namespace std;

int mapDraw(int array[], int mapMax, int mapBound){
    for(int i = 0; i <= (mapMax - 1); i++){
        if((i % mapBound)==0){
            cout << endl;
        }
        cout << array[i];
    }
    return 0;
}

int main(){
    int mapx = 10;
    int mapz = mapx;
    int mapArea = mapx * mapz;
    int store[mapArea];
    for(int i = 0; i <= (mapArea -1); i++){
        int height = rand() % 3;
        store[i] = height;
    }
    mapDraw(store, mapArea, mapx);
    return 0;
}

当我运行代码时,它总是给我这个:

2211210012

2210121200

0020110222

2020012110

2020020121

2210012011

1220011211

2020120002

0201021221

0021212002

出于某种原因,它在多次运行该程序后继续给我相同的输出。我希望得到一些帮助,我有一种预感,当你在你的机器上运行它时,它会给你一个不同的矩阵,所以请尝试多次运行它,看看连续运行的结果是否相同。提前感谢您的帮助!

最佳答案

调用 srand() 时,参数会随着程序的每次不同运行而变化(通常 time(0) 工作正常)。这将初始化伪随机数生成器的内部状态(如您所见,只要程序运行,它就会设置为默认状态)。

关于c++ - 随机数函数未正确随机化 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125062/

相关文章:

php - 生成随机的 "pattern-lock"数字序列

c++ - 是否需要 "nested"释放 std::vector<pair<vector<int>,int>> 中的保留内存以手动释放它?

c++ - 原子 128 位内存模式选择

random - 如何通过从字母数字字符中采样来创建随机字符串?

c++ - srand(1) 和 srand(0) 有什么区别

swift - RGB 值在着色时做奇怪的事情? - swift

c# - 随机数生成 - 返回相同的数字

c++ - 为什么对 c 和 c++ 使用 gcc 和 g++ 编译器驱动程序

c++ - 有没有办法获取我发送给 C++ 中的对等方的 OpenSSL X509 证书名称?

c++ - 如何在默认情况下在 eclipse-cdt (Eclipse for C++) 中启用指令步进?