我正在尝试制作基于文本的角色扮演游戏,并且我目前正在实现 diceroll 功能:
int diceRoll(){
int n;
srand(time(0));
n = rand() % 4;
return n;
}
int main()
{
int RandNum = diceRoll();
cout<< " Randomly generated number: " + RandNum;
return 0;
}
然而它输出了这个:
尝试:cout << "Randomly generated number: " << RandNum;
您实际上是在将数字添加到字符串中......这并没有按照您的想法进行。实际上,它计算字符串的地址偏移量,我猜这就是您在开头添加一些空格的原因。您可能想要流插入运算符<<
:
cout<< " Randomly generated number: " << RandNum;
srand()
此外,在随机数生成器内部调用是个坏主意。为什么?因为如果你快速调用它很多次time()
可能每次都返回相同的值,导致每次都rand()
以相同的值作为种子,因此给出相同的结果(也就是不是很随机)。在大多数情况下,您应该在程序开始时调用srand()
一次。
您通常不应该使用 rand() 和模数。这是一个坏习惯。相反,请使用<random>
:
http://www.cplusplus.com/reference/random/。
或者只是谷歌“c++随机头使用”或类似的东西。