Homework 2 Percolation FAQ
常见问题解答
如果 T 等于 1,stddev()
应该返回什么?
样本标准差未定义。我们建议返回 Double.NaN,但我们不会测试这种情况。
系统完成渗透后,PercolationVisualizer
会将所有连接到底部开放站点的站点(以及连接到顶部开放站点的站点)都标记为浅蓝色。这种“回流现象”可以接受吗?
虽然允许回流现象不完全符合Percolation API的要求,但修复这个问题需要一定的技巧,而且即使不修复,也只会扣少量分数。
如何在 PercolationStats
中,在所有被阻塞的站点中均匀随机地生成一个站点?
随机选取一个位置(通过StdRandom
或其他库生成两个0(含)到N(不含)之间的整数),如果该位置已被阻塞,则使用;否则,重复此过程。
当 N = 200 时,我在 PercolationStats
中无法获得可靠的计时信息。我该怎么办?
增加 N 的大小(例如,增加到 400、800 和 1600),直到平均运行时间超过其标准差。
我通过了所有其他测试,但卡方检验失败了。
问题在于您对多个模拟使用了相同的随机种子,并且统计测试发现了它们是相同的事实。
查看StdRandom
的代码可知,它只会在首次使用时设置一次随机数种子,从而避免了种子重置的问题。因此,请不要手动设置随机数种子。
或者,确保您没有生成有偏差的随机数。您应该使用生成整数的 StdRandom
方法,而不是生成双精度浮点数的方法。
程序提示我的percolates()
方法返回“false”,但运行可视化工具时却显示为“true”!
可视化工具执行一个非常特定的 isOpen()
/isFull()
/percolates()
调用序列。尝试编写你自己的测试用例,只打开一些位置,然后调用percolates()
方法。或者,禁用可视化工具中所有对isOpen()
和/或isFull()
方法的调用,以便集中精力调试percolates()
方法的行为。或者,密切关注标记为 Random Operation Order
的测试。
我的代码在我的计算机上可以编译,但在自动评分器上无法编译。
你的代码必须严格遵守API规范。不允许向Percolation
类添加额外的public方法或变量。在测试PercolationStats
时,我们会使用官方提供的Percolation
参考版本,而不是你自己的版本,以避免错误扩散。这意味着你不能依赖任何额外的public方法。
如何选择要运行的文件?如何在 IntelliJ 中传递命令行/程序参数?
首先,导航到 Run -> Edit Configurations。你可以在这里配置不同的调试选项,将不同的类设置为你的“主类”(这意味着程序会从该类中的“main”函数开始执行)。点击左上角的加号可以新建一个配置。对于本课程,你只需要创建一个Application类型的配置即可。然后,您可以随意命名您的配置,选择您想要用于该配置的主类,以及在程序参数字段中设置任何命令行/程序参数。将程序参数输入到该字段中,就像在终端中一样 - 一行,参数之间用空格分隔。