7121| 6
|
[讨论交流] Mind+的随机数真的随机嘛? |
Mind+的随机数真的随机嘛? 你们的魔鬼来咯,好的又是我,最近被笼罩在了阴霾里,看了标题大家就基本明白我这次要研究的是什么了,随机数就是今天的主题。 事情是这样的,年关将至,我接到了一个神圣的任务,用Mind+写一个年会抽奖程序,这可难不倒我分分钟程序就出炉了(关于抽奖的舞台特效之后有机会再发帖分享),大概就是下图那样。 那既然是抽奖程序,关乎到自己能否在那么多同事中脱颖而出获得年会大奖,大家纷纷想在年会前来抽一抽验证一下自己的欧气,本来不抽还真没事,可一抽这就出大事了,怎 么 有 几 个 人 老 是 中 奖 ??? 一切罪恶的源泉就来自于Mind+软件里的随机数模块。 作为编写程序的人,抽奖老抽这么几个人,宝宝我真的很难解释,所以我决定就用Mind+的舞台来把随机结果量化,从而证明我的清白。 验证思路很简单,以Mind+的舞台X轴-239到240的像素点作为480个被抽奖人,每被抽到一次,就在那个点向上用画笔工具画一段线,最后观察柱状图计算标准差来证明随机的随机性。 写这个程序的时候,其实没想到会那么简单,运用了列表功能,首先运用循环指令在列表内新建480个值,值都等于-180,-180这个值就是舞台的最下边缘,等会随机到某一个像素的时候,从列表内确定它的值并向上画一段线就好。 接着来到主循环,结束条件是列表内有一个值到达了180,即舞台的顶部,每次循环会用到Mind+的随机数指令,从1到480随机出一个幸运像素,然后将角色移动到它对应的X坐标,再从列表中获取它的Y坐标,接着就是落笔向上画1个像素抬笔,最后把该像素对应的列表内的Y坐标加1。 经过了漫长的等待,终于运行完毕了,看到这样的结果我终于松了一口气,兴奋之余我想到了列表内还有珍贵数据,要想办法处理,当时的数据是这样的。 这样的数据其实是不对的,每个像素其实是从-180累加上来的,所以这个时候还要对列表内的数据进行批量处理,同时在每个数据前添加一个逗号,至于原因往后看就知道了。 好在实时模式下用鼠标一点就能运行,很快我的数据就处理好了。 右键导出非常的方便,会生成一个txt文件,这个时候我发现之前加的逗号都是全角逗号,没法进行处理,幸好文本文档有替换功能。 处理完毕以后,就全选复制黏贴进标准差计算器进行计算。 这就是为什么我要在每个值之前加逗号,其实这一步也能在Mind+里完成,但是因为懒我就找了个网页版的用了。 得出的结果其实是令人满意的,在这项测试中,样本数480显然已经足够了,平均数311标准差17并不是用来说明这个随机是否公平公正,而是用来证明在样本数足够的前提下,没有出现欧皇与非酋,哎呀意思就是没有出现特别多的和特别少的,总体还是很平均。 在做这个项目的时候,我看到了Mind+的另外一面,没想到简单编个程作为实验工具用起来是那么的方便快捷,不知道各位也没有用它写过简单的工具程序呢?如果有的话希望能看到大家的分享! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed