【发布时间】:2015-11-16 22:27:23
【问题描述】:
我正在创建一个带有类的井字游戏,在学校使用 C++。
Part2 要求我实现单人模式(我对电脑)。
我有一个 3x3 矩阵,随机插入坐标(CPU 移动)的函数总是在主对角线 (1,1;2,2;3,3) 中播放。
如果我在调用“随机”方法并逐步调试时放置断点,它会创建除主对角线之外的其他坐标(这很好)。
我不明白为什么它只有在我逐步调试时才有效。
这是随机方法:
void Ponto::aleatorio() {
srand(GetTickCount());
x = (rand() % 3)+1;
srand(GetTickCount());
y = (rand() % 3)+1;
}
【问题讨论】:
-
只调用一次
srand(GetTickCount());(例如,从main(),不是每次调用您的函数时。 -
真的吗?谢谢。太棒了,而且有点令人沮丧,一行代码如何破坏我的程序。即使我的老师也看不到问题。非常感谢。我只是删除了额外的 srand(GetTickCount());第 y 行 = (rand() % 3)+1;
-
@Ferro 并不是你在
aleatorio中有两次调用srand,而是你连续多次调用aleatorio。 -
“随机”不是随机的,它是“伪随机”。不要设置
srand两次,只设置一次。在每次调用rand()时,您肯定会得到一个新值。或者最终相同,但肯定会更加随机。