c++ - rand() 不会创建随机数

标签 c++ random

<分区>

我有一个简单的程序,到目前为止可以创建 5 张公共(public)牌(都是整数)。我设法设置了这些(它们是全局变量,这是故意的),但每次我运行程序时,它们都会创建相同的数字。下面是代码。

int communityCards[5];
int playerCards[2];
int opponentCards[2];
int communityValues[5];
int playerValues[2];
int opponentValues[2];

int main(int argc, const char * argv[]) {
    for (int i = 0; i < 9; i++) {
        if (i < 5) {
            communityCards[i] = rand() % 52 - i;
            for (int a = 0; communityCards[a]!=0; a++) {
                communityCards[i]==communityCards[a]?communityCards[i]++: a = a;
            }
        }
        printf("%i ", communityCards[i]);
    }
}

最佳答案

使用srand在调用 rand 之前,只需使用适当的种子一次。通常使用srand(time(0))

或者,C++11 提供了很多更好的 random number generators具有细粒度的规范(rand 基本上不保证其生成的数字的质量)。

关于c++ - rand() 不会创建随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928895/

相关文章:

java - 自动装箱字符值然后返回空白值

c++ - 从数组中删除元素的函数不起作用

python - 如何在嵌套结构中查找元素并返回索引

随机化 TODO 列表?

c++ - 产生超几何分布的随机变量

c++ - 在类中使用随机生成器时的性能问题

c++ - Memcpy 可读范围

c++ - 对我的类(class)实现删除功能

c++ - 强制资源管理器重新加载注册表值

c++ - Boost + Mingw-w64 + Boost 日志不起作用