游戏:
有一个盒子分为五个部分。盒子里面是老鼠。猫坐在盒子附近。
每转一圈,猫都会将爪子放在该部分上。
1)如果猫用鼠标将爪子放在区域,则游戏结束
2)否则,鼠标移动到相邻区域,包括猫爪下的区域
我正在尝试找到一只策略猫将以最少的移动次数(平均)获胜。
链 - 循环重复的猫的移动序列。
以下函数返回给定链的平均获胜步数:
public static double computePerformanceForChain(String chain)
{
final int iterationsCount = 10000;
int catPos, mousePos,steps=0;
Random random = new Random(System.currentTimeMillis());
for(int i=0; i<iterationsCount; i++)
{
mousePos=random.nextInt(5);
for(int j=0;;j++)
{
catPos=Integer.parseInt(String.valueOf(chain.charAt(j%chain.length())));
steps++;
if(catPos==mousePos) break;
if(mousePos==0) mousePos=1;
else if(mousePos==4) mousePos=3;
else mousePos+=random.nextInt(2)*2-1;
}
}
return (double)steps/iterationsCount;
}
例如,computePerformanceForChain("1133")
返回大约 3。
但对于链"23"
函数循环。
为什么会这样?谢谢。