随机函数c ++的播种值

时间:2016-01-31 13:56:46

标签: c++ function random seed

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

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

黑桃杰克,钻石之王,10颗心,4支俱乐部,黑桃王, 8颗钻石,3颗钻石,3颗钻石,7颗钻石,5颗俱乐部, 3颗心,10颗心,6颗钻石,黑桃王,钻石杰克, 7颗钻石,3颗钻石,钻石之王,杰克之心,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;

}

1 个答案:

答案 0 :(得分:3)

伪随机生成器的工作方式。每当您输入相同的种子时,它将以相同的顺序输出相同的数字。

要解决此问题,请改用group_by(df, Country) %>% tally(Count, sort = TRUE) %>% group_by(Country = factor(c(Country[1:3], rep("Other", n() - 3)), levels = c(Country[1:3], "Other"))) %>% tally(n) # Country n # (fctr) (int) #1 AUS 6 #2 JPN 5 #3 USA 5 #4 Other 7

time(NULL)

只能在您的计划中拨打srand(time(NULL)); 一次。

如果您有权访问C ++ 11,那么您应该使用新的srand标头功能,例如here