https://www.dropbox.com/s/5iklxvhslh4kfe7/CS%203114.zip
学校のプロジェクトのコードに、理解できないバグがいくつかあります。上記のリンクは、プロジェクトの私のコードへのリンクです。プロジェクトの説明は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ループはすべての反応の起動時間を更新し、2番目のforループは私のテーブルを使用して特定の依存反応を更新します。私の答えは最初のforループでは正しいですが、2番目のforループを使用すると正しくありません。すべての反応の発火時間を更新し、結果が私のテーブルと一致する場合、どの傾向が変化するかを確認するためにテストしました。これは、唯一の違いが-Math.log(Math.random())係数であることを意味します。乱数を定数に設定すると、両方のループを使用して同じ結果が得られます。私は自分のコードを何度も調べましたが、問題が何であるかを理解できません。誰かが私を助けることができますか?
PS:.ltfファイルは、非常に大きな.txtファイルです。.ltfを使用して、通常の.txtファイルと区別します
DIMERの例の正しい手段は次のとおりです。〜650〜650〜220
編集:3番目のループはデバッグ目的のためだけです。私が話している2つのループは、1番目と2番目のループで、1番目のループはコメントアウトされたループです。