c++ - 随机函数 C++ 的种子值

标签 c++ function random seed

我需要使用种子 2222 为随机函数播种。shuffleDeck() 函数从 std 库调用 random_shuffle。

注意:问题是,每次我以 no_deals=5 和 cards_per_hand=5 运行程序时,我都会得到相同的模式:

黑桃 J、方片 K、红心 10、梅花 4、黑桃 K、 方 block 8、方 block 3、方 block 3、红心 7、梅花 5、 红心 3、红心 10、方 block 6、黑桃 K、方 block J、 红心 7,方 block 3,方 block K,红心 J,方 block 3,

不应该有变化吗?我输入的种子 2222 是否正确?

srand(2222);

for (int i=0; i<no_deals; i++)
{
   // test.shuffleDeck();
         for(int j=0; j<cards_per_hand; j++)
      {
                //test.dealCard();

                check.at(j)=test.dealCard();
                cout<<check.at(j)<<", ";
                test.shuffleDeck();
      }

       cout<<endl;

}

最佳答案

这就是伪随机生成器的工作原理。每次输入相同的种子,它都会以相同的顺序输出相同的数字。

要解决此问题,请使用 time(NULL)相反:

srand(time(NULL));

并且只调用srand在你的程序中一次。

如果您可以使用 C++11,那么您真的应该使用新的 <random> header 功能,一个例子 here .

关于c++ - 随机函数 C++ 的种子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35114633/

相关文章:

c++ - 如何将成员函数传递给基类构造函数?

javascript - 这个函数与按钮循环的原因是什么?

algorithm - 选择随机元素的数据结构?

c++ - Nintendo DS Homebrew 中的 Alpha 混合 Sprite

c++ - 复制在标准 vector 中只出现一次的元素的最有效方法是什么?

c++ - 在特定情况下不发送 UDP 广播

c# - 如何在unity3d,c#中有两种随机状态?

c++ - 将 Qt3D 用于巨大的地形模型?

python - 无法将类型 'myFuncDef *' 分配给 'void (*)(double *, double *)'

jquery - 在两个类上以相同的方式随机化一些东西