Mind+的随机数真的随机嘛?

2020-01-142万
AI 快速预览详细 收起
本文探讨了如何使用Mind+软件验证随机数的随机性。作者编写了一个年会抽奖程序,通过在Mind+舞台上绘制柱状图并计算标准差来证明随机数的均匀分布。实验结果显示,在样本数为480的情况下,平均数为311,标准差为17,表明没有出现特别多或特别少的情况,总体非常平均。
Mind+的随机数真的随机嘛?


       你们的魔鬼来咯,好的又是我,最近被笼罩在了阴霾里,看了标题大家就基本明白我这次要研究的是什么了,随机数就是今天的主题。



       事情是这样的,年关将至,我接到了一个神圣的任务,用Mind+写一个年会抽奖程序,这可难不倒我分分钟程序就出炉了(关于抽奖的舞台特效之后有机会再发帖分享),大概就是下图那样。

Mind+的随机数真的随机嘛?图1


       那既然是抽奖程序,关乎到自己能否在那么多同事中脱颖而出获得年会大奖,大家纷纷想在年会前来抽一抽验证一下自己的欧气,本来不抽还真没事,可一抽这就出大事了,怎 么 有 几 个 人 老 是 中 奖 ???

       一切罪恶的源泉就来自于Mind+软件里的随机数模块。
      Mind+的随机数真的随机嘛?图2
       作为编写程序的人,抽奖老抽这么几个人,宝宝我真的很难解释,所以我决定就用Mind+的舞台来把随机结果量化,从而证明我的清白。

        验证思路很简单,以Mind+的舞台X轴-239到240的像素点作为480个被抽奖人,每被抽到一次,就在那个点向上用画笔工具画一段线,最后观察柱状图计算标准差来证明随机的随机性。
     Mind+的随机数真的随机嘛?图3
      写这个程序的时候,其实没想到会那么简单,运用了列表功能,首先运用循环指令在列表内新建480个值,值都等于-180,-180这个值就是舞台的最下边缘,等会随机到某一个像素的时候,从列表内确定它的值并向上画一段线就好。
      接着来到主循环,结束条件是列表内有一个值到达了180,即舞台的顶部,每次循环会用到Mind+的随机数指令,从1到480随机出一个幸运像素,然后将角色移动到它对应的X坐标,再从列表中获取它的Y坐标,接着就是落笔向上画1个像素抬笔,最后把该像素对应的列表内的Y坐标加1。
      Mind+的随机数真的随机嘛?图4
      经过了漫长的等待,终于运行完毕了,看到这样的结果我终于松了一口气,兴奋之余我想到了列表内还有珍贵数据,要想办法处理,当时的数据是这样的。
      Mind+的随机数真的随机嘛?图5
      这样的数据其实是不对的,每个像素其实是从-180累加上来的,所以这个时候还要对列表内的数据进行批量处理,同时在每个数据前添加一个逗号,至于原因往后看就知道了。
      Mind+的随机数真的随机嘛?图6
       好在实时模式下用鼠标一点就能运行,很快我的数据就处理好了。
       Mind+的随机数真的随机嘛?图7
       右键导出非常的方便,会生成一个txt文件,这个时候我发现之前加的逗号都是全角逗号,没法进行处理,幸好文本文档有替换功能。
       Mind+的随机数真的随机嘛?图8
       处理完毕以后,就全选复制黏贴进标准差计算器进行计算。
      Mind+的随机数真的随机嘛?图9
       这就是为什么我要在每个值之前加逗号,其实这一步也能在Mind+里完成,但是因为懒我就找了个网页版的用了。
       得出的结果其实是令人满意的,在这项测试中,样本数480显然已经足够了,平均数311标准差17并不是用来说明这个随机是否公平公正,而是用来证明在样本数足够的前提下,没有出现欧皇与非酋,哎呀意思就是没有出现特别多的和特别少的,总体还是很平均。
     
       在做这个项目的时候,我看到了Mind+的另外一面,没想到简单编个程作为实验工具用起来是那么的方便快捷,不知道各位也没有用它写过简单的工具程序呢?如果有的话希望能看到大家的分享!

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
kylinpoet
kylinpoet
多谢分享,学习了。
R2D2
R2D2
木子没中,她要打死你。
木子哦
木子哦
年会抽奖程序是不是你写的
木子哦
木子哦回复Luke
..........
Luke
Luke
作者
回复木子哦
对是我。。。又一个想要来找BUG的嘛
壮梽棱云
壮梽棱云
6666666666
- 没有更多了 -