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.买双色球技巧之选号五真言!蓝球彩民大乐透期买双色球技巧之选号五真言! 双色球是一款很受彩民朋友喜欢的娱乐活动,选号过程既充满乐趣,也需要一些技巧和耐心。今天咱们就来聊聊,玩双色球时如何选号码更有章法、更轻松,让大家既能享受购彩的乐趣,也能离大奖更近一步。这五句真言,通俗易懂,大家可以记下来!https://www.163.com/dy/article/JIKSOCOF0553TDVI.html
2.收集网络上各路大侠放出的面试题求职技巧靠运气:确实有些人运气好,被某大公司招走,拿着高薪,没羞没臊的过着幸福的生活,这几率比买彩票高不了多少。 靠自己能力:大部分人还是靠能力吃饭的,你有多少能力给你多少钱这是很正常的。 找工作靠的其实就是能力和运气,首先要做好基本功,你没有工作经验,但面试题和考官问的碰巧你都会,那你就是赶上了,你https://blog.csdn.net/fznf1010/article/details/8117380
3.新手航模入门什么飞机好一点车友交流20来岁的年纪看上了红旗h5旗享,自己已经把价格聊到15w左右了,之前也看过一年的领克03,说实话也是我最爱的车了,但是很少有人能懂喜欢03人的心情,加上家里第一辆车综合空间颜值什么的这个价位还是红旗好一点。家里也是比较支持的,但是也提出了是不是应该先买个小车子过度一下新手期,等结婚了工作稳定了再https://www.dongchedi.com/tag/ugc/16365745
4.新手如何买股票,买股票如何开户和注意事项有哪些?股票另外网上开户还是有一个流程,就是直接在网上进行核对,所以开户前需要准备好身份证,手机,电脑(连网,有麦克风和摄像头),然后到证券公司官网,找到网上开户的连接,按提示操作就可以了。 新手怎么购买股票,应该注意什么呢 其实买股票就像买彩票一样,也是需要注意技巧和方法的,对于跌幅较快和涨幅较快的股票建议先保持观看的https://www.ppdai.com/gl/gupiao/article_3890_1.html
5.我是新手,做跨境电商哪个平台合适?人没有理想,跟咸鱼有什么区别。 资金和心态很重要! 很多网友上来就问我需不需要投资? 做跨境电商,是需要资金的,我觉得做任何创业项目,都是需要资金的,所以你得备充足的资金(如果你能找到0投入0风险的项目麻烦告诉我一下,谢谢)如果的你觉得有天上掉馅饼,那还不如去买彩票,来钱快还省事。 我认为最重要的或是https://wd.znds.com/115474.html
6.《新闻联播》新手买彩票怎么选号《腾讯新闻》央广新闻VK新手买彩票怎么选号【陆雨导师】 腾讯Q:6449015 信誉网08yy.vip 快盈邀请码88854022 金牌团队 顶尖计划 导师单带 回血上岸 万人推荐 据腾讯新闻报道:谁才是最厉害的回血导师?真正有实力带回血上岸的导师!大小单双导师带赚钱,导师带赚钱一对一 。当你有想法时,与其听非专业人士随便说,影响了你对一个事物的认https://vk.com/topic-211009450_48683925
7.懂视教2017年如何用手机买彩票 怎么买彩票2017 2017手机买彩票 2017手机购彩票 手机买彩票怎么买 2017年彩票 怎么实现excel2007/2010不同文档窗口分离显示 excel2007/2010怎么 不同文档窗口分离显示 excel2010不同文档窗口分离显示 excel2007/2010怎样 excel2007/2010 可以实现excel2007/2010不同文档窗口 excel2007不同文档窗https://m.51dongshi.com/tagall1186/
8.想买第一张彩票,新手攻略来了!日照要闻日照新闻网小编为您送上一份新手攻略 怎么买?买什么?如何兑奖? “一站式”讲解清楚 明明白白买彩票 开开心心做公益 第一站 彩票,去哪里买? 买彩票 认准中国福利彩票销售站 大红的门头很耀眼 社区 商场 便利店 处处都有福彩站的身影 找到离您最近的那家店 https://www.rznews.cn/viscms/minshengxinwen1708/20231010/527549.html
9.想买第一张彩票,新手攻略来了!小编为您送上一份新手攻略 怎么买?买什么?如何兑奖? “一站式”讲解清楚 明明白白买彩票 开开心心做公益 第一站 彩票,去哪里买? 买彩票 认准中国福利彩票销售站 大红的门头很耀眼 社区 商场 便利店 处处都有福彩站的身影 找到离您最近的那家店 https://i.ifeng.com/c/8TlNBEfSSzQ
10.中年失业模拟器怎么玩?新手入门攻略大全可能有部分玩家对新上线的游戏中年失业模拟器该怎么玩还不是很熟悉。下面就让九游小编为大家分享,中年失业模拟器新手入门攻略大全。 中年失业模拟器玩法攻略大全: 1、开局看完5个广告拿到vip 2、之后一定要去买彩票(每回合都买),看运气中500万(不难)https://a.9game.cn/wzry/5414456.html
11.彩票感悟。自从有了彩票,我就研究至今。刚开始时幻想着天天中奖!把自己抽烟的钱,变成买彩票的钱。没有技术,没有技巧。完全在瞎蒙。买彩票花了几万,而中奖才1万左右。所以新手买彩票。要控制好自己的情绪。并不是每次买票都能中奖。要有技术,要有技巧。还要看运气。https://www.17500.cn/arts/sdetail-10330796.html