C ++的超级初学者,如果这段代码非常难看,请原谅我。
string enemy;
int num;
num = rand()%(5);
switch (num)
{
case 1: enemy = "Ogre";
break;
case 2: enemy = "Goblin";
break;
case 3: enemy = "Orc";
break;
case 4: enemy = "Dark Elf";
break;
case 5: enemy = "Lizardman";
break;
}
基本上应该发生的是,取决于随机数是什么,选择的情况是该数字将变量“敌人”设置为该情况。但经过一些调试后,我发现唯一出现的情况是第一个。我搜索了一个答案,但他们都说我唯一需要的就是休息(我已经有了)。我的代码出了什么问题?
答案 0 :(得分:3)
这不起作用,因为rand()
值介于0到4之间,因为rand()
返回介于0和RAND_MAX
之间的值,并且您将其除以5。
要解决此问题,只需更改
即可num = rand()%(5);
到
num = rand()%(5) + 1;
此外,您可能希望使用
为rand()
函数设定种子以获得更好的结果
srand(time(NULL)); // requires #include <ctime>
答案 1 :(得分:2)
您需要先调用 srand
srand()播种rand()使用的伪随机数生成器。如果在对srand()的任何调用之前使用rand(),则rand()的行为就像是用srand(1)
播种一样
请参阅link
这就是为什么你总是得到1
的结果。
srand(time(0)); //use current time as seed for random generator
num = rand() % 5;
答案 2 :(得分:0)