VBA新手教程:抽卡模拟实战(3)腾讯云开发者社区

从头开始学习一门编程语言,如果不能设定一个明确的目标:我要用他来干什么,解决什么问题。那么整个过程可以说是相当痛苦了,而且还很快会忘!所以今天咱们就来实际解决一个问题:用蒙特卡洛法实现简易的模拟抽卡功能!

复习个屁都鸽了一个多月了,忘了之前讲的啥了,自己翻翻前面的都不难!

(喜爱炉石的小朋友看过来)做一个预测抽卡的功能:假设所有的卡牌种类数为S,抽取每张卡牌的概率是一定的即1/S,想求在有放回的抽取了N张卡牌后,获得的卡牌种类的期望X是多少。我猜此刻数学系的小伙伴儿已经带着一脸不屑拿起笔开始算了,好的,咱们比谁快!

蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。百度百科

很low的界面如图,填写如下信息:总卡牌数、抽卡次数、模拟次数,程序会读取相应值。最后的期望显示在cells(8,”C”)

1、先定义变量名称类型,然后把数值读进去。为了方便理解咱们还是low一点直接用汉字。这里讲解一下第一行Application.ScreenUpdating=False,从名字上就可以看出叫“屏幕刷新”,然后赋值为False(否),即“屏幕不刷新”。这样每次输入一个值就不用在Excel中展示,可以大大提高程序的运行速度。程序在执行完毕后会自动赋值为True,我们就能看到结果了。类型,为什么有的用Integer,有些用Long。模拟次数很可能会超过30000,所以改成Long型(前面的知识点不赘述了)。

代码段2、思路。a)定义一个手里的牌库,当然种类需要跟总卡牌数一样多。b)然后每抽到一张牌,就更新手牌库,对应的种类就赋值为1,代表已拥有。c)在抽取了“抽卡次数”张卡牌后,记录当前拥有的卡牌数:遍历手牌,如果为1,记录值。添加到一个总计值中,回头都模拟完了除以模拟次数就是期望值。d)以上bc两个过程重复“模拟次数”次,记得每次重置手牌。3、继续写代码a)定义了一个总计值,但是模拟次数多了Long也可能会溢出,管不了那么多了!b)定义了手牌,长度匹配总卡牌数,但是需要在后面Redim(重新定义)一下数组长度,如果直接写成Dim手牌(1to总卡牌数)asinterger会报错,因为Dim不支持定义动态长度,锅都在“总卡牌数”是一个变化的值!c)两层的循环,第一层:模拟次数;第二层,抽卡的次数。这个理解吧!d)每一次模拟的时候,清空手牌,Erase擦掉就可以啦!Erase只可以对数组使用,意义为初始化数组(理解成“擦掉”也是可以的。)e)这里有一个知识点,就是Erase和Redim的顺序。我们在Dim手牌()asinteger时,定义的是一个非固定数组,所以在Erase这个数组时,会重置到这个最开始定义的情况,数组长度就变为了0,所以需要重新redim一下数组长度。

代码段4、最关键的逻辑出现了!a)定义了一个临时的整数TempInt,一会用来存放随机出来的卡牌ID。b)Randomize,重置随机数种子。如果不写这句,很有可能你每次运行随机出来的第一个数都是一样的。(不过影响不大)。c)Rnd随机数,系统会自动生成一个[0,1)左开右闭区间的随机数。所以Rnd*100,生成随机数的区间就变成了[0,100),所以Rnd*100+1就变成了[1,101),因为取不到101这个最大值,所以当用Int函数取整时,会把小数部分都丢掉,我们就完成了在[1,100]区间随机选取整数值的功能。d)其他部分自行看代码理解!已经没生知识点了!

代码段5、结果:直接上图!蒙特卡洛法的结论:经过1000次的模拟,在卡片种类在100种情况下,每次抽取100张卡平均会得到63.322种不同类型的卡牌。

演示结果6、其他模拟条件可以随意更改。

演示结果

电脑卡死了

(电脑死机了)注意1、对于蒙特卡洛法来说,模拟次数越多就越接近真实结果。2、但永远不会得到一个准确结果,满足精度要求即可。3、看你自己电脑性能,模拟次数别手贱填太多,容易死机。

1、自己照着写一遍,然后再默写一遍,你就无敌了!2、可以拓展一下,在总卡牌数一定、模拟次数一定时,设定分别抽取不同的卡牌数,然后模拟出不同的对应结果。可以思考一下如何取值,结果如何呈现。3、可以试着开发一下解决其他问题的模拟工具,比如买彩票!假设一个人每天买一注,平均需要连续购买多少天才能中一等奖!平均花费多少钱!(算完你就再也不碰了戒赌)

1、再讲一个While循环,这个真是没办法确实不能完全被For循环替代。2、写了一堆Bug,咋整?我自己看着都懵!(没错,讲解一下调试方法。)3、以前的预告留着挖坑了,下期再介绍一些字符串处理的实战,帮你把兴趣搞上来!

THE END
1.一分钟盘点!不懂彩票的人怎么买彩票频道顶部 首页首页 一分钟盘点!不懂彩票的人怎么买彩票 2024-12-02 13:07 · 0次播放 发布于:斯里兰卡 一抹情长 +订阅 +1 评论 全部 还没有人评论过,快来抢首评 写评论相关推荐 查看更多精彩内容 https://m.sohu.com/a/832382564_121263241
2.以太坊新手入门知识以太坊新手入门知识 币界网报道: 与以太坊网络交互的前提是,你拥有以太币(ETH)。除非你是矿工,否则获得ETH的唯一途径就是从其他以太币持有者那里得到。以下是加密货币交易所列表,在这里,你可以用法定货币或加密货币购买ETH。强烈建议将你所拥有的ETH储存在一个硬件钱包中!https://www.528btc.com/college/162270737375151.html
3.如何成为一名黑客(新手入门到大师1集)如何成为一名黑客(新手入门到大师1集) 1、黑客的精神态度是很重要的,但技术则更是重要。黑客的态度虽然是无可取代,随著新科技的发明和旧技术的取代,这些工具随时间在慢慢的改变。例如:以往总是会学会用机器码写程序,直到最近我们开始使用HTML。不过,在1996年末,当然,这是基础的hacking技能。在1997年,理所当然的,https://blog.csdn.net/leah126/article/details/136206384
4.一名购彩者的“修炼”计划对于购彩者来说,如何做到快乐购彩、享受生活呢?如过好人生一样,需要修炼。这样一份 “修炼”计划,您看看是否可行? 第一阶段:掌握购彩入门基础理论和必备技能 对于刚开始购彩的彩票小白来说,难免会感到懵懂和迷茫。这时候,就需要掌握一些购彩的基本理论知识和必备技能。 https://www.cwl.gov.cn/c/2019-08-26/456938.shtml
5.中年失业模拟器怎么玩?新手入门攻略大全可能有部分玩家对新上线的游戏中年失业模拟器该怎么玩还不是很熟悉。下面就让九游小编为大家分享,中年失业模拟器新手入门攻略大全。 中年失业模拟器玩法攻略大全: 1、开局看完5个广告拿到vip 2、之后一定要去买彩票(每回合都买),看运气中500万(不难)https://a.9game.cn/wzry/5414456.html
6.买彩票的高手今天又有新话题,3D彩市风云面面观!上市新游新手入门可以从以下几个方面着手: 1. **了解基本概念**:熟悉3D坐标系、模型、材质和光影效果等基本术语。 2. **选择合适的软件**:可以选择Unity或Unreal Engine等主流游戏引擎,这些工具提供丰富的资源和教程。 3. **学习建模**:借助Blender等建模软件,学习如何创建和编辑3D模型。 4. **编程基础**:了解一些http://m.hljmx.net/news/3772.shtml
7.福彩知识这里有彩票的“身份信息”,刮开无效!2024-06-10 双色球朋友:这种玩法要注意2024-06-07 中几个球能中奖?新手必看2024-06-07 新手入门,双色球如何选号2024-06-07 数识双色球,记住4个数字2024-06-07 谁来监督彩票公益金的使用?2024-05-09 警惕街头“一元刮刮乐”, 切勿上当受骗2024-04-23 https://www.gzfucai.cn/fucaizhishi
8.实时买彩票赚钱平台社会新闻12月02日,如何看待政治学家福山致信马斯克,30而已网盘超清提取码,唐阮阮傅锦川全文免费阅读,仙踪林视频网站入口怎么进?灵,偷偷看别人做爰过程,东京热TokyoHotn富永杏,乡村爱情第9部免费观看电视剧,冰封重生之门2时空行者,三国志12新手入门全攻略详解,揉开乖女紧窄小缝,丝男士2波多野结衣在线播放,哆啦A梦http://m.gyjiancai.com/v/video/20241201/86710292.shtml?id=20241201ddcZN3itBz-scm
9.2024年11月30号发布——《深圳彩民花80元买彩票中了2.25亿[撒花]深圳一男子买 80 元彩票中了 2.25 亿,中奖难度有多大?普通人该如何面对这“泼天富贵”? 彩票这种东西真的是看运气的,中奖名额就那么多,中不中不仅要看人的运势还要研究彩票的一些规律,这种东西没玩过彩票是压根不会懂的。 深圳这个男子是第一次玩双色球,但是他非常幸运的就中奖了,不少人都戏称这是https://www.toutiao.com/w/1817149964315660/
10.新手必读贴blacktusk期待收获的季节A: 首先请看常见问题解答和发帖需知,发觉好多新手都不看就开始发帖问。 其次,wiki是个非常好的地方,你的问题基本都有解答。我建议从这里看起: 新手预备知识和新手入门指引。 Q: 如何安装ubuntu? A:ubuntu7.04新手指南。这个是图形界面的,相信你一定可以照做。另外也可以参见[图形教学]一步一步跟我学ubuntu7.04http://www.cppblog.com/heidaizx/articles/33372.html
11.?平台足球安卓登录软件娱乐我们的目标是打造一个专业且全面的电玩门户,让玩家能够在坦肆龙漫电玩网轿乱享受到最丰富、最全面的游戏体验。无论是新手还是资深玩家,都能在我们的网站中找到适合自己的内容,无论是下载游戏、获取攻略,还是了解行业动态,龙漫电玩网始终是您的首选之地。 http://baike.zxg.ink/blog/09270223467133.html
12.新手购彩必备攻略,轻松步入体彩世界!只需点开“中国体育彩票服务号” 在菜单栏中选择“购彩服务” 点击“身边体彩店” 即可查询到离你最近的体彩店 跟随导航前往 即可邂逅你的“小幸运” 微信小程序同样可以 找到附近的体彩店哦! 第二步:买什么游戏? 购彩新手纠结选哪个游戏? “排列3”绝对是入门之选! https://www.tjtc.org.cn/c/2024-02-27/37825000.shtml
13.新手购彩必备攻略,轻松步入体彩世界!南方+只需点开“中国体育彩票订阅号” 在菜单栏中选择“购彩服务” 点击“身边体彩店” 即可查询到离你最近的体彩店 跟随导航前往 即可邂逅你的“小幸运” 微信小程序同样可以 找到附近的体彩店哦! 第二步:买什么游戏? 购彩新手纠结选哪个游戏? “排列3”绝对是入门之选! https://static.nfapp.southcn.com/content/202403/04/c8656178.html