我正在制作井字游戏,而我现在正在制作玩家的对手。如您所知,井字游戏有 9 个字段,所以我制作了一个向量,其中包含其他 X 和 O 已经使用的所有字段。
std::vector<int> UsedPositions;
因此,在我尝试使用 srand(time()) 获取随机值并遍历向量以检查该位置是否已被使用之前。它确实有效,但正如您想象的那样,我可怜的 CPU 需要进行大量计算(因此是时间),因为如果向量有大约 8 个元素,则意味着它必须迭代 8 次(如果随机数是不同,否则它必须再经过 8 次)。
TL; DR - 如何从向量中获得 < 10 && > 0 的不同随机值?
对我来说很慢的代码:
int FindUniqueAnswer()
{
int answer;
bool AnswerFound = false;
while(!AnswerFound)
{
bool DoesntEqual = true;
srand(time(0));
int random = rand()%10;
if(random == 0)
{
random++;
}
for(int i = 0;i<UsedPositions.size();i++)
{
if(random == UsedPositions.at(i))
{
DoesntEqual = false;
break;
}
}
if(DoesntEqual)
{
answer = random;
AnswerFound = true;
}
}
return answer;
}