我在Mac上有这个dieRole功能但是当我把它移到Visual C ++ 2012时,每次结果都是6
int dieRoll() // return a number between 1 and 6
{
static int maxRange = RAND_MAX / 6 * 6;
int result;
do
{
result = rand();
}
while(result > maxRange);
return result % 6 + 1;
}
答案 0 :(得分:1)
您忘记初始化伪随机生成器,但不会返回相同的数字。你需要调用srand(),例如与当前时间。
答案 1 :(得分:1)
考虑致电srand()
。您可以使用时间或进程ID提供不同的种子。请记住,这是伪随机性,不一定是您可能认为是“随机”的。
int main()
{
srand(time(NULL));
std::cout << dieRoll() << std::endl;
}
尝试上面的代码会每隔一秒产生不同的结果。 : - )