C ++ Rand函数错误

时间:2013-03-03 01:49:30

标签: c++ random

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

然而它输出了这个:

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

您实际上是在字符串中添加数字...这不符合您的想法。它实际上是计算和解决字符串的偏移量,我猜是为什么你在它的开头添加了一些空格。您可能想要流插入运算符<<

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

此外,在随机数生成器中调用srand()是个坏主意。为什么?因为如果你快速调用它很多次time()每次都可以返回相同的值,导致rand()每次都以相同的值播种,从而得到相同的结果(也就是说不是很随机) 。在大多数情况下,您应该在程序开头调用srand()一次。

答案 2 :(得分:1)

你一般不应该使用rand()和模数。这是一个坏习惯。相反,请使用<random>http://www.cplusplus.com/reference/random/. 或者只是google&#34; c ++随机标题用法&#34;或类似的东西。