在单个函数中调用时,rand()返回相同的值我是一个C ++新手,我很难过。我需要在我的main函数中调用这个函数三次,但每次它给我相同的结果,即pull_1,pull_2,pull_3是相同的。我需要做些什么来使它们实际上是随机的?string PullOne(){
string pick;
string choices[3] = {"BAR", "7", "cherries"};
std::srand(time(0));
pick = choices[(std::rand() % 3)];
return pick;}从我的主要功能:string pull_1, pull_2, pull_3;pull_1 = PullOne();pull_2 = PullOne();pull_3 = PullOne();
3 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
你为什么一直打电话std::srand(time(0));
?重新播种PRNG ....并且因为这一切都在同一秒内发生,所以你总是以相同的顺序重新播种它。
在你的程序中调用srand
一次,只调用一次。
此外,我建议,至少在符合POSIX标准的系统上,std::srand(time(0) ^ getpid())
这样,你可以在同一个“秒”内运行你的程序两次,并仍然得到一个新的PRNG序列。
- 3 回答
- 0 关注
- 621 浏览
添加回答
举报
0/150
提交
取消