2013-03-03 48 views
-1

我试图做一个基于文本的角色扮演游戏,我目前正在实施diceroll功能功能错误:C++兰德

int diceRoll(){ 
int n; 
srand(time(0)); 
n = rand() % 4; 
return n; 
} 
int main() 
{ 
    int RandNum = diceRoll(); 
    cout<< " Randomly generated number: " + RandNum; 
    return 0; 
} 

然而,它输出这样的:

+2

http://stackoverflow.com/a/1117317/962089。既然它被删除了,'const char(&)[N] + int'并不像你想要的那样工作。 – chris 2013-03-03 01:50:58

+0

当您输出RandNum到cout时,请使用<<而不是+ + – 2013-03-03 01:52:07

回答

5

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

+0

谢谢!现在工作完全正常 – JonAmen 2013-03-03 14:46:31

4

你实际上是把这个数字加到字符串中......这不符合你的想法。它实际上是计算和处理来自字符串的偏移量,我猜测这就是为什么你在它的开头添加了一些空格。你可能想流插入操作,<<

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

此外,这是一个坏主意,叫你srand()随机数发生器内。为什么?因为如果你快速调用它很多次time()可能每次都会返回相同的值,导致rand()每次都会以相同的值播种,因此会给出相同的结果(又称非常随机)。在大多数情况下,您应该在节目开始时拨打srand()一次。

1

你不应该一般使用rand()和模量。这是一个坏习惯。相反,使用<random>http://www.cplusplus.com/reference/random/. 或者只是谷歌“c + +随机头用法”或什么simillar。

+0

cplusplus.com不好,你应该感觉不好 – thecoshman 2014-07-01 09:00:54

+0

@thecoshman [en.cppreference.com](http://en.cppreference.com/)? – Tqn 2014-07-07 06:32:28