大家好,亲爱的 stackoverflow 会员,我最近开始学习 C++,今天我写了一个小游戏,但我的随机函数无法正常工作。当我多次调用随机函数时,它不会重新生成数字,而是一遍又一遍地打印相同的数字。不使用for循环如何解决这个问题?
谢谢
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int rolld6();
int main()
{
cout<<rolld6()<<endl;
cout<<rolld6()<<endl;
system("PAUSE");
return 0;
}
int rolld6()
{
srand(time(NULL));
return rand() % 6 + 1;;
}
srand(time(NULL));
通常应该做once开始时main()
再也不会了。
您每次拨打电话时都会得到相同的号码rolld6
在同一秒内,这可能是lot次,并且在您的示例中,几乎可以保证,因为您快速连续调用它两次。
尝试这个:
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdlib.h>
int rolld6 (void) {
return rand() % 6 + 1;
}
int main (void) {
srand (time (NULL));
std::cout << rolld6() << std::endl;
std::cout << rolld6() << std::endl;
system ("PAUSE");
return 0;
}
另一件需要记住的事情是,如果您快速连续运行该程序本身两次。如果时间没有改变,您将在两次运行中得到相同的两个数字。当您有一个脚本多次运行该程序并且该程序本身寿命很短时,这通常才会成为问题。
例如,如果您拿出您的system()
打电话并进行了cmd.exe
调用它三次的脚本,您可能会看到类似的内容:
1
5
1
5
1
5
这不是你通常会做的事情,但应该记住,以防万一出现这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)