Java学校项目随机错误

时间:2013-02-21 18:41:23

标签: java eclipse random system project

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循环更新每个反应的触发时间,而第二个for循环使用我的表来更新特定的依赖反应。我的答案对于第一个for循环是正确的,但是当我使用第二个循环时不正确。如果我更新每个反应发射时间并且结果与我的表格匹配,我已经测试了看哪些倾向会发生变化。这意味着唯一的区别是-Math.log(Math.random())因子。如果我将随机数设置为常数,那么我使用两个循环得到相同的结果。我多次查看我的代码,但我无法弄清楚问题是什么。任何人都可以帮助我吗?

P.S .: .ltf文件只是非常大的.txt文件。我使用.ltf将它们与常规.txt文件区分开来

DIMER示例的正确方法是:~650~650~220

编辑:第三个循环仅用于调试目的。我正在谈论的2个循环是第一个和第二个循环,其中第一个是被注释掉的那个。

1 个答案:

答案 0 :(得分:0)

您的第一个循环中不需要table[reactionIndex]。只需使用table.length-1,就可以使用i作为索引中的位置来循环使用。