c++ Rand函数错误

C++ Rand Function error

本文关键字:错误 函数 Rand c++      更新时间:2023-10-16

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

然而它输出的却是:

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

您实际上是将数字添加到字符串…它的作用和你想的不一样。它实际上计算和地址偏移从字符串,我猜这就是为什么你在它的开始添加了一些空格。您可能需要流插入操作符<<:

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

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

一般不应该使用rand()和modulus。这是个坏习惯。相反,使用<random>:http://www.cplusplus.com/reference/random/。或者搜索"c++随机头文件使用"或类似的东西