调试时行为不同

时间:2015-11-16 22:27:24

标签: c++ random

我正在使用C ++为学校创建一个TicTacToe游戏。

第2部分要求我实施单人模式(我与电脑)。

我有一个矩阵3x3,随机插入坐标的功能(CPU' s move)总是在主对角线(1,1; 2,2; 3,3)中播放。

如果我打电话给"随机"方法和调试一步一步,它创建除主对角线之外的其他坐标(这是好的)。

我不明白为什么只有在我逐步调试时它才有效。

这是随机方法:

void Ponto::aleatorio() {
    srand(GetTickCount());
    x = (rand() % 3)+1;

    srand(GetTickCount());
    y = (rand() % 3)+1;
}

1 个答案:

答案 0 :(得分:1)

使用值调用srand时,此值将用作启动随机数生成器的种子。使用相同的种子生成随机数将生成相同的序列。由于您正在使用GetTickCount()为生成器设定种子,因此程序在下一个时钟周期之前运行,因此始终使用相同的参数调用srand。就像@πάνταῥεῖ所说,用GetTickCount()调用一次,然后调用它而不用args以随机顺序获取下一个数字。