繁体   English   中英

Java学校项目随机错误

[英]Java school project random error

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())因素。 如果将随机数设置为常数,则使用这两个循环可以获得相同的结果。 我已经检查了我的代码很多次,但我只是想不出问题出在哪里。 谁能帮我吗?

PS:.ltf文件只是很大的.txt文件。 我使用.ltf将它们与常规.txt文件区分开

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

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

在第一个循环中不需要table[reactionIndex] 只需使用table.length-1 ,您就可以将i用作索引来遍历和处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM