游戏:
有一个框分成五个部分。盒子里面坐着鼠标。坐在箱子附近的猫。
每回合,猫把他的爪子放在部分。
1)如果猫用鼠标将他的爪子放在部分上,则游戏结束
2)否则,鼠标移动到相邻部分,包括猫爪下的部分
我正在尝试找到一个战略猫,将赢得最少的动作(平均)。
链 - 循环重复猫的动作序列。
下面的函数返回的移动平均数来赢得对于给定的链:java随机。奇怪的行为
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"
函数循环。
这是怎么发生的?谢谢。
你是什么意思的“功能**循环**”? – Vrushank 2013-02-27 06:53:20
如果你的值是从0开始的,那么它可能会不幸地在'0'和'1'之间跳动。当'catPos'没有时,不能保证你会在'2'或'3'上登陆。 – pickypg 2013-02-27 06:54:29
“函数循环”表示无限循环。 – 2013-02-27 06:59:28