https://www.dropbox.com/s/5iklxvhslh4kfe7/CS%203114.zipJava的學校項目隨機誤差
有一個在我的代碼爲我的,我只是想不通學校項目的一些bug。上面的鏈接是我的項目代碼。項目說明位於P1.pdf文件中。
我的錯誤有事情做與此代碼:
/*
for (int i = 0; i < reactions.length; i++)
{
reactions[i].UpdateFireTime();
debugwriter.write(i + "| " + reactions[i].FireTime());
debugwriter.newLine();
}
debugwriter.newLine();
heap.build();
//*/
//*
for (int i = 0; i < table[reactionIndex].length; i++)
{
int rindex = table[reactionIndex][i];
reactions[rindex].UpdateFireTime();
}
for(int i = 0; i < reactions.length; i++)
{
debugwriter.write(i + "| " + reactions[i].FireTime());
debugwriter.newLine();
}
debugwriter.newLine();
heap.build();
//*/
第一個for循環更新一次反應的燒成時間,而第二個for循環使用我的表更新特定相關的反應。我的答案對於第一個循環是正確的,但在使用第二個循環時不正確。我已經測試過,看看哪些傾向會改變,如果我更新每個反應的射擊時間並且結果與我的表相匹配。這意味着唯一的區別是-Math.log(Math.random())因子。如果我將隨機數設置爲常量,則使用兩個循環得到相同的結果。我已經多次查看過我的代碼,但我無法弄清楚問題所在。誰能幫我嗎?
P.S .: .ltf文件只是.txt文件,它們相當大。我用的是.ltf從常規的.txt文件區分
的二聚體例如正確的方法是:〜650〜650〜220
編輯:第三個循環只是用於調試目的。我說的2個循環是第一個和第二個循環,其中第一個循環被註釋掉了。