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.买彩票的五句口诀,双色球选号常用秘籍,你掌握了几条买彩票的五句口诀,双色球选号常用秘籍,你掌握了几条唐莉 河南 1 打开网易新闻 体验效果更佳2011年基辛格重评抗美援朝:最大赢家是中国,最大输家是苏联 喂喂黄 10跟贴 打开APP 见识一下阿塞拜疆人,是如何把疯狂的羊尾油制作成美食的? 美食有毒 410跟贴 打开APP 没有他的掩护,中国很难崛起。(静思有我) https://m.163.com/v/video/VMHQIG9MJ.html
2.收集网络上各路大侠放出的面试题求职技巧靠运气:确实有些人运气好,被某大公司招走,拿着高薪,没羞没臊的过着幸福的生活,这几率比买彩票高不了多少。 靠自己能力:大部分人还是靠能力吃饭的,你有多少能力给你多少钱这是很正常的。 找工作靠的其实就是能力和运气,首先要做好基本功,你没有工作经验,但面试题和考官问的碰巧你都会,那你就是赶上了,你https://blog.csdn.net/fznf1010/article/details/8117380
3.初学者怎么买彩票彩票相信大家都知道,但买过的人并不多,因为彩票虽然销量巨大,但花钱买的人大多是回头客,那今天就来讲讲新手如何买彩票。工具/原料 新手 彩票 方法/步骤 1 1.购买彩票的主要渠道是线下的投注站,在这里买不但快速而且安全,而且还会提供选号以及开奖号码公布的服务。2 2.还有一种是最近几年流行的,就是在https://jingyan.baidu.com/article/295430f161ad354c7f00503f.html
4.新手如何买股票,买股票如何开户和注意事项有哪些?股票另外网上开户还是有一个流程,就是直接在网上进行核对,所以开户前需要准备好身份证,手机,电脑(连网,有麦克风和摄像头),然后到证券公司官网,找到网上开户的连接,按提示操作就可以了。 新手怎么购买股票,应该注意什么呢 其实买股票就像买彩票一样,也是需要注意技巧和方法的,对于跌幅较快和涨幅较快的股票建议先保持观看的https://www.ppdai.com/gl/gupiao/article_3890_1.html
5.普通人日赚千元的方法有哪些?盘点十个日赚5001000元的方法十、买彩票 这个是我无意中看到的,运气好也许一天就百万收入,但是大部分人都是买个智商税。 这就是我看到的方法,大家还有什么方法日赚500-1000元呢? 本文作者:高省APP古楼团队&联合创始人蓓蓓导师(19980730050),霸屏找古楼,价格低效果好,专注网络推广13年,累积精准引流过千万。高省创始邀请码110000注册后,后台可https://www.jianshu.com/p/c6c9813cb42b
6.?平台足球安卓登录软件娱乐我们的目标是打造一个专业且全面的电玩门户,让玩家能够在坦肆龙漫电玩网轿乱享受到最丰富、最全面的游戏体验。无论是新手还是资深玩家,都能在我们的网站中找到适合自己的内容,无论是下载游戏、获取攻略,还是了解行业动态,龙漫电玩网始终是您的首选之地。 http://baike.zxg.ink/blog/09270223467133.html
7.彩票感悟。自从有了彩票,我就研究至今。刚开始时幻想着天天中奖!把自己抽烟的钱,变成买彩票的钱。没有技术,没有技巧。完全在瞎蒙。买彩票花了几万,而中奖才1万左右。所以新手买彩票。要控制好自己的情绪。并不是每次买票都能中奖。要有技术,要有技巧。还要看运气。https://www.17500.cn/arts/sdetail-10330796.html
8.新手炒股必读经典正如译者丁圣元所说:“通过本书,技术分析信奉者可以正本清源,认识技术分析的起源、发展,切实体验到趋势的重要性,把趋势永远放在技术分析的核心地位。”分享一下我这个刚刚接触理财的“小白”的感悟:1.选择好股票,学习投资理论是前提既然要投资,基本的理论还是要学的,毕竟投资不是买彩票,闭着眼睛买涨跌是行不通的。https://book.douban.com/review/14239452/
9.新手购彩必备攻略,轻松步入体彩世界!南方+只需点开“中国体育彩票订阅号” 在菜单栏中选择“购彩服务” 点击“身边体彩店” 即可查询到离你最近的体彩店 跟随导航前往 即可邂逅你的“小幸运” 微信小程序同样可以 找到附近的体彩店哦! 第二步:买什么游戏? 购彩新手纠结选哪个游戏? “排列3”绝对是入门之选! https://static.nfapp.southcn.com/content/202403/04/c8656178.html
10.新手必读贴blacktusk期待收获的季节A: 可以尝试硬盘安装,不过并不能100%保证装的起来,尤其是新手,而且此方法并不推荐,官方也不作任何支持。请做好足够的心理准备。参见:6.10alternate的硬盘安装教程。 Q: 如何合理分区? A: 一块硬盘最多四个主分区,或三个主分区+一个扩展分区(内含n个逻辑分区)。linux可以安装在主分区或逻辑分区。一般情况下,只http://www.cppblog.com/heidaizx/articles/33372.html
11.马斯切拉诺:我曾作为球员与迈阿密国际签约,但没有人知道澳门赌博软件,麻将胡了pg最高爆分视频,开元ky老版本77cc,有什么好的投注网站,腾辉彩票平台官网LOL投注人民币,口袋b计划伴侣小屋游戏,买球那个网站比较好,2024澳利澳九肖图片查询,加拿大8倍平台押注电竞app,js333金沙线路,外围怎么买足球,lol亚博网站,pg模拟器在线试玩网址众乐乐免费版,ky体育app官网网页,雷竞技下载http://m.tizhijia.cn/REP/moa/baDefycyq.html
12.点击正版点击非凡英雄第5集正在播放242能上什么大学 上海风楼 天猫商城网上购物 怎样用手机购买竞彩 今天的足球赛事时间表 全世界最大的博物馆在哪里 捕鱼正版 188正常体重 网页版手机登录 湖北金钻金属制品有限公司 基金信息披露的禁止行为不包括 四季红彩票app下载 足球比赛去哪买比较好 求赌博群 小刀汇竞彩足球推荐2021 hlg82http://www.adhdzs.cn/045545klimfxy967701.html
13.意媒:米兰&那不勒斯&塞维有意租借基维奥尔,已向阿森纳咨询信息老版本金星app安装下载,下载lol的软件叫什么,彩票模拟选号器软件,九5至尊金,yg1.app怎么下载香港1997官方网站登录,天威棋牌官方最新版,新澳门二肖中特期期准,万博app官方下载安卓,龙之神途游戏礼包开yun体育app下载官网,老版彩77彩票,彩票3d排列三,香港大全资料201234,打开22彩票彩民好帮手APP,十大正规网络彩票8888,http://m.ssaayy.cn/20241206/8973.html
14.新手求问,什么时间段申购新股更容易中签?新股摇号过程中,最前面和最后面的概率相对较小,处在中间的号更容易摇到。这个类似于买彩票一样,处https://licai.cofool.com/ask/qa_2729628.html
15.这种典型的买彩票思维,反正便宜,终有几只会中大奖。这新手人家智商这种典型的买彩票思维,反正便宜,终有几只会中大奖。这新手人家智商起点就比很多老股民高。 小红书纯新手八万块,买了185只低价股。刚好最近垃圾股疯涨,让他们盈利了。 羡慕。 但是这佣金交易费有点贵。 全部讨论 大A有几个新手能稳定赚钱的,融资市的定位不改变的话,没十几年道行90%的人是来送菜的。https://xueqiu.com/5970481192/310598145
16.6种人容易中彩票什么面相的人买彩票中奖率高4、信奉风水的人:认为购彩时遵循一定的风水原则会有更好的中奖机会。 5、新手彩民:刚开始接触彩票的人,特别是第一次购彩时获得大奖的机会较高。 6、对号入座者:会尝试让自己的个人信息如生日、纪念日等数字与彩票号码对应,希望能够中奖。 什么面相的人买彩票中奖率高 https://www.qiyuange.com/xiangshu/95697.html