本文总共825个字,阅读需3分钟,全文加载时间:2.294s,本站办公入门专栏收录该内容! 字体大小:

文章导读:祝各种小伙伴周末愉快,今天周日,我们用Excel来娱乐一下,模拟一下发红包的算法,100元发10个红包,然后金额分布情况,模拟1万次,看手气最佳分布的位置。 这个算法在工作中的应用场景就是,固定的一个数据,然……各位看官请向下阅读:

祝各种小伙伴周末愉快,今天周日,我们用Excel来娱乐一下,模拟一下发红包的算法,100元发10个红包,然后金额分布情况,模拟1万次,看手气最佳分布的位置。

这个算法在工作中的应用场景就是,固定的一个数据,然后生成N个随机数,这N个随机的总和等于这个固定的数据。

❶首先我们建立辅助项,输入的公式是:=($C$1-SUM($C$2:C2))/($A$1-A2)*2-0.01

C3至C11的公式为:=RANDBETWEEN(1,B3*100)/100

C12的公式为:=C1-SUM(C3:C11)

这个公式看起来复杂,其实是来源一个算法思路。

首先B列给定了红包的分布区间最大值,C列的红包是在这个区间内产生随机数。

B列红包区间的定义思路是:

在第1个红包的时候,每个人平均可以拿到100/10=10元,所以第1个红包的金额范围在0.01-19.9元内随机,到第2个红包的时候,后面的人平均可以拿到(100-第1个已领取的4.4)/9,然后第2个红包的金额范围在0.01-2倍平均值之间,以此推下去,最后一个的金额用总金额减掉前面所有的金额,保证了最后一个人的金额至少为0.01

根据这个思路,才产生的上述的公式,再去理解的话,就能够理解了。

❷然后我们计算手气最佳出现在第几个

使用公式计算出现的位置:

=MATCH(MAX(C3:C12),C3:C12,0)

❸然后我们模拟10000次,记录这10000次手机最佳出现的位置,这个工作用VBA来完成,我们按ATL F11,插入一个模块,然后输入代码,运行

Sub 模拟()For i = 1 To 10000Cells(i, "h") = [f1]Next iEnd Sub

运行这段代码,得到了1万个手气最佳的数据

最后我们用数据透视表也好,用countifs计数也好,我们做了3次1万次的计数分析。

从数据的分布情况看,第1个或最后抢红包的人出现手气最佳的概率是大一点,所以大家抢红包的时候都慢点抢吧。。。

---------------

作者:小H

以上内容由优质教程资源合作伙伴 “鲸鱼办公” 整理编辑,如果对您有帮助欢迎转发分享!

你可能对这些文章感兴趣:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注