【mcbe】【氵】一格宽水道结冰率
本文参考了 @bWFuanVzYWth 的 《水是怎么结冰的》

本文参考了 @AlanSchezar 的 《结冰速率测试》

本文借助了 @hhhxiao_ 的 trapdoor 插件加速测试


结冰的机制:
在每一个gametick
对每一个区块
在区块内随机选取一个xz
获取能被淋到雨的最顶部方块
如果满足1/16的成功率
如果满足结冰判定
把这个方块替换成冰
其中结冰的判定包括这个方块是水,是否有相邻的方块,所在的群系与海拔等。
——《水是怎么结冰的》
这些机制在原文附的代码中有更好地体现,包括 打乱区块更新顺序、采用随机数来选择水源、判断水源附近是否有方块存在 等(没有注释读起来是真痛苦 _(:з」∠)_ )
但是对于一格宽水道来说所需要考虑的事情没有这么多,因为水池内每一格水都有水池壁可以作为旁边的方块。所以相对来说只需要乘上结冰率就可以很好地模拟了。所以虽然程序的通用性差了很多,但编写起来更容易、得出结论的速度快一点了
下图第一行 为结冰率,第二行 为六次实测的平均值(800格水源),第四行为程序计算结果。可以看出程序计算结果和实际情况比较接近

下图左侧为程序计算结果,右侧为linlin的程序模拟结果,可以看到结果比较接近


附录:
由于文章内容里附的数据更多是证明程序计算数据的可用性,完整数据请联系作者
程序采用的均为c++的标准库,如有可以欢迎自行修改代码以适配自己的需求