我需要使用种子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;
}
答案 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。