-1

我正在尝试制作基于文本的角色扮演游戏,并且我目前正在实现 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;
}

然而它输出了这个:

4

3 回答 3

5

尝试:cout << "Randomly generated number: " << RandNum;

于 2013-03-03T01:50:46.910 回答
4

您实际上是在将数字添加到字符串中......这并没有按照您的想法进行。实际上,它计算字符串的地址偏移量,我猜这就是您在开头添加一些空格的原因。您可能想要流插入运算符<<

cout<< "   Randomly generated number: " << RandNum;

srand()此外,在随机数生成器内部调用是个坏主意。为什么?因为如果你快速调用它很多次time()可能每次都返回相同的值,导致每次都rand()以相同的值作为种子,因此给出相同的结果(也就是不是很随机)。在大多数情况下,您应该在程序开始时调用srand()一次。

于 2013-03-03T01:51:55.140 回答
1

您通常不应该使用 rand() 和模数。这是一个坏习惯。相反,请使用<random>http://www.cplusplus.com/reference/random/。 或者只是谷歌“c++随机头使用”或类似的东西。

于 2014-06-28T06:11:45.650 回答