为了账号安全,请及时绑定邮箱和手机立即绑定

在单个函数中调用时,rand()返回相同的值

在单个函数中调用时,rand()返回相同的值

C++
万千封印 2019-07-31 10:42:42
在单个函数中调用时,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序列。


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 621 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信