在制作EXCEL完后,我们通常要自行验证自己的试算表是否正确,但验证的路远而宽广,是你的程式写错,还是你的EXCEL出错,我该怎么判断,是不是有一些规则可循?因为自认为目前只能算个初阶机率而已,我想就让我分享我在大海捞BUG时的一些技巧跟逻辑,希望之后的机率工程师可以更快的上手。
程序
- Feature类(Locked Wild 盘面变形)的程式逻辑先后要非常清楚,先算分还是先变化的处理上要非常小心,前后搞错模拟出来会差很多
- Pay Table写入数值正确很重要(曾经200写成20炸掉过)
- 自然机率滚轮抽取后写入盘面的位置正确很重要(曾经Reel 2抽完写到Reel 3的位置)
- 盘面上有Locked Wild时,Scatter出现在同一位置的变化
(假设我的盘面把Locked Wild 预设为数字15,Scatter预设为数字16,我会设定数字17做为Locked Wild跟Scatter同时出现时使用) - Line Game 及Way Game的算分逻辑正确很重要(通常这比较少错因为写过一次基本上就是一直沿用)
Excel
- 尽量不要使用复制贴上(刚开始制作Excel时会因为贪图方便,而使用复制贴上如下图,我会直接把A3复制到B3,但当你A3做更改时B3会维持原样,因此后来都会尽量使用在B5表格内填入=A5 的方法减少错误)
2.Way Game的滚轮表(因Way Game的计算方式会在滚轮表最后补上相对应的图示,数量是否正确)
3.Way Game的滚轮表与计算Way Game数量长度是否相等(假设盘面是2*3)
4.马可夫链是否有拉错(通常数字差距大我会先从这部分开始检查)
结论
当程式模拟与Excel都完成后,但最后模拟结果与Excel对不起来
- 我都会先从Excel检查起,像MID找出来的值是否正确,范围抓得对不对,检查完觉得都没问题了,才会去程式里面除错
- 程式先从宣告类下手(像是上面提到的Pay Table),之后才会去检查程式逻辑,如果检查到头昏脑胀发现逻辑顺不出来加入一些printf(C#是Console.WriteLine)去验证先后顺序,若是使用像C#有个更强大的功能是单步执行搭配使用断点,其实就不需要土法炼钢的printf,直接单步执行针对想看的dictionary或是值去看就可以了
希望可以帮助跟我一样除错除到快疯掉的机率工程师们。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容