遊戲:
有一個框分成五個部分。盒子裏面坐着鼠標。坐在箱子附近的貓。
每回合,貓把他的爪子放在部分。
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