首页 > 数据库 > 数据库开发技术 > VBA新手教程:抽卡模拟实战(3)



点击蓝字关注我们
以上是胖子从前写的三篇,这货居然说只有一个多月没写了,这都快3个月了好吧!
从头开始学习一门编程语言,如果不能设定一个明确的目标:我要用他来干什么,解决什么问题。那么整个过程可以说是相当痛苦了,而且还很快会忘!所以今天咱们就来实际解决一个问题:用蒙特卡洛法实现简易的模拟抽卡功能!
复习个屁都鸽了一个多月了,忘了之前讲的啥了,自己翻翻前面的都不难!
(喜爱炉石的小朋友看过来)
做一个预测抽卡的功能:假设所有的卡牌种类数为S,抽取每张卡牌的概率是一定的即1/S,想求在有放回的抽取了N张卡牌后,获得的卡牌种类的期望X是多少。
我猜此刻数学系的小伙伴儿已经带着一脸不屑拿起笔开始算了,好的,咱们比谁快!
蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。 百度百科
1、先定义变量名称类型,然后把数值读进去。为了方便理解咱们还是low一点直接用汉字。
这里讲解一下第一行
Application.ScreenUpdating = False,从名字上就可以看出叫“屏幕刷新”,然后赋值为False(否),即“屏幕不刷新”。这样每次输入一个值就不用在Excel中展示,可以大大提高程序的运行速度。程序在执行完毕后会自动赋值为True,我们就能看到结果了。
类型,为什么有的用Integer,有些用Long。模拟次数很可能会超过30000,所以改成Long型(前面的知识点不赘述了)。
(电脑死机了)
注意
1、对于蒙特卡洛法来说,模拟次数越多就越接近真实结果。
2、但永远不会得到一个准确结果,满足精度要求即可。
3、看你自己电脑性能,模拟次数别手贱填太多,容易死机。
1、自己照着写一遍,然后再默写一遍,你就无敌了!
2、可以拓展一下,在总卡牌数一定、模拟次数一定时,设定分别抽取不同的卡牌数,然后模拟出不同的对应结果。可以思考一下如何取值,结果如何呈现。
3、可以试着开发一下解决其他问题的模拟工具,比如买彩票!假设一个人每天买一注,平均需要连续购买多少天才能中一等奖!平均花费多少钱!(算完你就再也不碰了戒赌)
1、再讲一个While循环,这个真是没办法确实不能完全被For循环替代。
2、写了一堆Bug,咋整?我自己看着都懵!(没错,讲解一下调试方法。)
3、以前的预告留着挖坑了,下期再介绍一些字符串处理的实战,帮你把兴趣搞上来!
宇宙可能就是上帝掷骰子模拟出来的,蒙特卡洛无敌!
欢迎在下方留言与我们一起探讨学习营造河蟹氛围。
讲解错误、疏漏、难于理解的地方不欢迎批评指正!生气!你就留言指责吧,不会让你上墙的!就这样再见!
终于可以开通打赏了哈哈哈哈!我觉得自己要致富了!
你的4块3毛8是我前进的动力!
然鹅如果你对我有不满有批评我还是不会让你上墙的!

扫描二维码
关注我们
微信号 :AlphaGame
原文作者:可以叫我才哥;如有侵权,请联系管理员删除。