0062 - 随机中的必然 |【简单几行代码看透误以为】
本帖最后由 不二如是 于 2019-8-23 14:29 编辑最近看闲书,遇到了一个抛硬币实验很有意思,拿程序简单模拟了一下。
这么简单的事物,我们却存在偏见。
我们可怜的大脑,被误以为太厉害了,最近完结的思维(意识)的#七宗罪有兴趣的鱼油可以去了解下~
好了,言归正传,这个实验是这样的:
有一个统计学教授,在第一堂课上,给学生布置了个作业。
要求大家做一件特别乏味的工作,拿出一枚硬币,连扔200次,然后记下结果,正面还是反面,仔细记录。
教授提醒说:“你们可别造假,造假我可看得出来。”
学生们以为教授只是在吓唬人,没当回事。
对啊,什么叫连续扔硬币,不就是搞一个随机数嘛。
随机数就是没有规律的数啊,我们就编一个没有规律的结果不就行了吗?
这是人之常情嘛,所以手动胡乱写200个很方便有木有。。。
果然有学生偷懒,没有老老实实地去掷200次硬币,而是编了个记录表交差了。
奇怪的是,教授果然一眼就能识别出哪些学生偷懒了,没有真的扔硬币。
那教授怎么发现的?
魔鬼在细节
很简单,如果是我们偷懒怎么搞?
胡编一个记录,只要正反都有就得了~
就像这样:
正反正反反正反反..
如果只是胡乱的看看,那确实没问题,但是作为逻辑性思维很强的统计学教授一看就知道大有问题!
教授之所以一眼看出来是假的,就是因为这个记录表编造得太“随机”了。
造假者认为,只有这样才符合掷硬币这种“随机现象”的特征。
他们会极力避免连续出现多次同样的结果。
让我们暂停一下,鱼油刚才是不是也是这么认为的呢?
揭开真相
他们认为,那样“太不随机”了。
实际上,如果你真去老老实实地掷200次硬币,而记录下来,就会发现:
正面或者反面连续出现六七次的现象会很多。
真正的结果会像这样:
正反反反反反正正反反正正正正正正正。
其实,懂概率的人稍稍计算一下,就能解释这个现象。
你扔10次硬币,结果都是正面的概率很小,只有1/1024(1/(210)),是极小可能性,可当掷的次数足够多的时候,情况就不一样了。
公式:
f(n<k) =0
f(k) = 1/(2^k)
f(n+1)= f(n) + /, n>k
有兴趣的鱼油可以写一个递归脚本算一算。
如果掷上700次,那连续10个正面出现一次的概率就达到约29%。
如果掷上5000次呢?
连续10个正面出现的概率达到了91.37%;
如果掷上1万次,概率为99.99%,这时,几乎可以确定,一定会出现连续10个正面。
那么回到最初的问题,200次,连续出现5,6次同样的状况,概率是多少呢?
还有一种比较好理解的反证法。
连续抛硬币6次,6次都出现同面的概率为1/2的5次方,等于3.125%。
所以,一次尝试抛不出连续6个同面的概率是1-3.125%=96.875%
第一次没有抛出6个同面,硬币已经抛过了6次,我们还有194次机会尝试。
所以,可以得出连续抛硬币200次,相当于195次尝试抛出6个同面的机会,那么抛不出6个同面的概率就是96.875%的195次方,等于0.002 05。
用1减去0.002 05就是抛200次硬币,出现连续6个同面的概率:0.998约等于99.8%
这意味着什么?
意味着:
基本上一定会出现连续6次
鱼油不信是吧,来一段简单的JS代码,验证一下:
// 模拟200次
for(var i = 1 ; i < 201 ;i++)
{
coinToss();
if((i % 20) == 0)
{
document.write("<br><br>");
}
}
function coinToss() {
// 随机数产生正反
var result = Math.floor(Math.random() * 2);
if(result == 0)
{
result = '正面';
}
else{
result = '反面';
}
document.write(result+" ");
}
看到了不?!
随便一次,结果中就有连续相同的结果,5-7次。
源码(回复“我爱鱼C”):
**** Hidden Message *****
所以,教授布置的作业很狡猾,他是让你掷硬币200次,其中一定会出现连续5-7次相同的情况。
如果看不到这种情况,看到的只要是更乱、更随机的记录结果,不用问啊,那就是学生偷懒造的假啊。
吹水
苏格拉底说过很多名言,其中这一句很适合今天的帖子:
未经审视的人生不值得度过
对于我们现在身处的时代,混乱无序中追求一种平衡,不管什么时代打麻将,可能都会发生:
一会儿手气特好,一会儿手气特差,好像麻将后面有鬼。就是打牌的时候,好像牌后面有人操纵。
这就是这个随机世界中的必然结果,当然等发生了再回看的必然,也没有多大意义。
但是,作为程序员我们可以这个鬼揪出来!
简单的一计算概率,大体赢面输面自然知晓。
而不是通过通过各种仪式,比如摸牌的姿势来讨好这个鬼。
所以麻将桌上也是特别容易诞生迷信的地方。
迷信和科学其实都是在找规律,只不过,科学讲究方法和证据,而迷信是一通胡来。
迷信的反义词是什么呢?
从上面来看那就不是科学了,是啥呢?
是承认不确定性,是承认随机性,承认有些东西不可解释,不可预测,并且欣然接纳它带来的结果。
所以,为什么程序员的认知能力都不错呢,因为能靠代码养活自己已经具备了如下两个条件:
第一要有逻辑思维能力。
第二会用代码验证随机性。
所以用代码思考自己的人生,还是很有意思的不是吗?!
之前在隔壁 JS 系列也写过一个双色球的代码,有兴趣的鱼油自行围观。(传送门)
预知更多神文请看:
菊、套与吹水 | 【???】
如果喜欢,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
如此多懂学习的VIP至尊都已订阅本专辑,你还不快点行动!(☞订阅传送门 ) 如果我是那个教授的学生,我可能也会像那样避免写出重复几次的结果,就像自己编一个随机数字一样,比如52036974180,总感觉有两个连续数字就好像不是随机的。
写了个验证抛200次硬币的python代码试了一下:
import random
for i in range(200):
if i%20 == 0:
print('\n')
temp = random.randint(0,1)
if temp:
print('正',end='')
else:
print('反',end='')
反反反正正反反正反正反正反反反反正反正正
正反正正反正反反反反反反正反反反反正正反
正正正正正反正反反正反正反正反反正正正反
反正反反反反正正反反正正正反正正正反反反
正正反反正反反反反反正正反反反正正反正正
正正正反正反正反反正正正反反反正反正反正
正反反反正反正正反反正正正正反反正反正正
正正反正反反反反反反正正正正正反正正正反
正正正反反正反正反正反反正正正正反反正反
正反反反正反正正反正正反正反正反反正反反
竟然有这么多次连续重复的!{:10_257:}
学到了,学到了!{:10_279:} 菊、套与吹水,每天涨姿势~ 根据概率学公式,投硬币的次数越多概率越接近百分之50,一开始投的时候可能是连续出正面或是反面都很正常 这里机器产生的随机数是伪随机数,据说真正能产生接近于真实随机数的芯片和算法不会用于民用的,很昂贵的 {:10_277:} 学习 希望不二大佬能讲讲js加密 谢谢谢 我爱鱼C 随机中果然存在必然 这个是怎么算的。。。。(710/1024 = 50%)
求解。。。
数学渣 有本事你发个随机算法(任意语言) 叫兽就是叫兽啊,老油条了 我爱鱼C 我爱鱼c 我爱鱼C
页:
[1]