我正在制作一个小型“龙与地下城”类型的程序,以帮助向我展示rand()命令。它工作得很好,除了它总是选择2.从不1.帮助?
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cout << "welcome to T's version of dungeons and dragons! \n Scenario:";
int Scenario1 = rand() % 2 + 1;
if(Scenario1==1){
cout << "you come across a sleeping traveler, Do you ignore him, or steal his loot?";
}
else {
cout << "you find an old bandit hideout in a cave. Do you ignore, or enter?";
}
}
答案 0 :(得分:1)
rand()
每次都会产生相同的数字系列。
种子确定rand
函数如何生成数字。为了更好的“随机性”,请在程序开头调用以下,例如作为main
内的第一个语句:
srand(time(NULL));
这使随机数生成器具有当前UNIX时间戳的值,该时间戳应该足够独特,以保证更好的随机性错觉。
有关srand
的更多信息,请访问:
http://www.cplusplus.com/reference/cstdlib/srand/
正如其他人所提到的,最好使用<random>
标题中的功能,因为这是一种更现代的方法,可以避免srand
/ rand
的许多陷阱范例
答案 1 :(得分:0)
rand()
将始终以相同的顺序生成数字。
要生成完全随机的数字,您可以使用srand(time(0));
time()
在名为#include <ctime>
更详细的信息,请查看:: https://www.youtube.com/watch?v=naXUIEAIt4U