分享

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

 hjr231 2019-09-17

本文不是教育你去买彩票,仅仅是思考彩票的逻辑,然后提高下自己的思维方式。

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

彩票是一张体彩的“超级大乐透”,百度了一下,规则很简单:

5+2,前五个数据是1-32中随机获得5个不重复的数,后两位1-12随机取两个值。就不去解释各个奖励的值了,今天就是简单的阐述一下怎么自己做一个抽奖函数,按照这个超级大乐透的模式去做。

这里需要思考几个点,这就是前几天我看了本书书上说的一句话:

什么是Excel?

Excel函数和公式的核心价值是确立数据之间的关联关系,并且使用新的数据(结果)描述出来。 ------------- 《别怕,Excel函数其实很简单Ⅱ》 编著:Excelhome

我个人对Excel的理解就是下面的这句话:

Excel就是数据和数据之间建立一个联系,进行数据处理,最后显示一个数据结果;结果也是另一个数据的参数,进一步分析处理,这就是Excel语言的嵌套。

言归正传,今天思考学习这个抽奖函数的制作,下面就是今天主要要写的5个步骤:

第一步:思考抽奖函数中的随机性

第二步:初步建立抽奖函数的逻辑性

第三步:尝试去写写这个抽检函数

第四步:通过尝试去慢慢优化函数

第五步:效果展示及思考

下面来跟着我的脚步,慢慢来看一张彩票引发的思考~

第一步:思考抽奖函数中的随机性

抽奖,抽到是什么?就是大数据小概率事件,我们不去思考怎么能抽到奖,我只来说怎么在Excel里面的这个怎么能够实现抽奖函数的效果。

以前五个数据中的第一个数据为例:随机在1-32中间抽取一个数值

这个要用的到函数就是RANDBETWEEN函数,这个函数很简单rand函数(随机生成数据)+between(在什么和什么之间),就是在某个范围内随机生成一个数据,那么根据题意就是在1-32中间获取一个值。

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

在1-32中间随机获取一个值

=RANDBETWEEN(1,32)

函数解析:在1-32中间随机获取一个值

第二步:初步建立抽奖函数的逻辑性

这个逻辑性的建立,就是思考怎么能体现彩票规则,也就是所谓客户需求:

1.前五个随机生成1-32的数值,后两位随机生成1-12的数值

2.前五个和后两位不能重复

3.由小到大排序

4.前五个数据和后两位数据没有关联性

那么里面就需要去思考这个每个条款的对应的函数的对应:

随机值可以用randbetween函数;前五个和后五个函数无关联性,那么取值就分开取值区间;从小到大排序,那就用small函数;这里面的不能重复,需要进一步思考怎么体现。

这里想到一句话:

不想当将军的士兵不是一个好士兵!-----拿破仑

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

做事情一定要思考,思考大局观,思考逻辑性,思考各种可能和各种方案,那么你就可以比别人更能接触一些东西,学到更多的知识。

第三步:尝试去写写这个抽奖函数

目前前五个值和后两位的值已经可以定下来了:

前五位=RANDBETWEEN(1,32)

后两位=RANDBETWEEN(1,12)

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

那么怎么能大小排序的函数嵌套进去呢?加载一个SMALL函数-区域/第几顺位

=SMALL($D3:$H3,COLUMN(A1))

=SMALL($I3:$J3,COLUMN(A1))

函数解析:在D3:H3的区域内,获取第一、第二..的小的值,就简单的对现有数据进行了排序

加上我们是横向拉取,需要对所选区域进行$锁定。经常会有人问,怎么能知道快速的写入这个$限制范围的符号,记住技巧:

$放在谁前面,那么拉取的时候就锁什么

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

第四步:通过尝试去慢慢优化函数

这里基本上就实现了我们初步的想法,但是发现还是有个小问题,就是这个所有的值都是随机获取的,那么在这么小的1-32的范围内,肯定会随机到一个重复值,怎么能进一步去除重复值呢?这个技巧就需要我们进一步思考:

这里我们加入一个函数RAND函数,这个函数本身就是为了获取0-1的中的任意一个数,没有限制,没有位数限制,基本上算是一个无限不重复的数据。把这个数据和现有的数据进行整合然后提取?是不是有想法了?

A:先随机获取一个数据1-35进行对应排列

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

B:然后进行一个对应值获取/排序处理

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

=INDEX($A:$A,RANK($B1,$B:$B))

=SMALL($E7:$I7,COLUMN(A1))

函数解析:

第一行=通过B1的值在B中的排序进行对应获取前面A列的值

第二行=对获取的值进行排序

这段函数有点深,但是要简单的理解和思考,就会发现很简单。rank函数获取某值在某区域的顺位(可以从小到大,也可以从大到小),然后INDEX获取对应值,最后从小到大排序结束。

第五步:效果展示及思考

效果展示,确实重复值消失了,这就是原汁原味的“超级大乐透”,想想好像可以自己猜彩票了感觉还挺好,但是初步的思考下这个获奖的概率,我的天三十忆分之一。

32*31*30*29*28*12*11= 31'8979'5840 想想还是算了~

停下步伐,思考~今天的逻辑课学到了啥?

惊天奥秘:一张彩票引发的思考-Excel能否自己做一个彩票抽奖呢

结尾

今天有个朋友问我,你写对这些文章难不难?她能学吗?

我想回答说:

我本身就希望我写的文章令大众小白都能接受和学习的方式。知识是什么?知识是乏味的数据和文字信息,而我就是把想这些信息通过我的表达,图片,方式去教给你,寓教于乐。我喜欢这样的教学方式,通过简单的例子,通过我们可以简单学习的方式和图片,让你更加容易的接受知识,然后学习知识。我也在慢慢摸索大家学习的方式和技巧,也在看些书,学习写文章,思考换不同的方式来教一些知识。希望能够满足大家的求知欲。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多