三七法则能帮程序员找对象?

一日,昔日好友惶恐至此,感概诸事不顺,游戏排位始终卡段,生活对象更是没有,我静静的看着他,从口袋里掏出一对象给他,并传授给他所谓三七法则。 -------沙漏在下雨的冷笑话

在这里插入图片描述

我最早接触所谓的三七法则还是在高中的辅导书上,那是一个很复杂的数学公式,最后得到的常数为0.37,所以这个也叫做三七法则,然而我现在公式忘记的一干二净了,可不久之前,从知乎上看到一则故事,也就是我们现在熟悉的版本,玉米地里摘玉米,我们想找到这个玉米地里面最大的一个,前者我们找到一个较大的玉米,然后沾沾自喜,可没想到,后面皆是大个玉米,后者,我们析取经验,一直向深处寻找,渴望找到一个最大的,可你发现,你已经走过这边玉米地也没确定一个最大者。

好友诧异:你跟我讲这个有啥用,这个三七法则能搞定我的困惑???
我回答到:你别小瞧这个三七法则,他作用可大了,我们不都是计算机专业的,你等着,我用编程跟你耍一耍!

我跟你说,我们就拿你想找对象这件事做一个例子讲,我看这个法则对你中不中,我拿0作为那些生活中遇到的女性,用1代表你未来对象,所有女性对象数量obj = 1000 ,我们代码跑下:

import random
obj = 1000  #  假定我的好友 一辈子就只能遇到1000个女生 
girl = [0 for i  in range(obj - 1)]
girl.append(1)
print(girl[900:1000]) # 这样我们就生成了01列表
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
count = 0 # 计数
random.shuffle(girl)  # 打乱一下数组
for i in girl:
    if i == 0:
        count += 1
    else:
        break
print(f'在第{count}次找到,找到的概率为{1 - count / obj}')
在第51次找到,找到的概率为0.949

这下好友直接兴奋的跳起来,你看,老天都帮我,我现在赶紧出去溜溜,没准就能找到对象。
你在做梦,实验具有偶尔性你又不是不知道,我看多给你来几次,让你认清一下现实的毒打

girl_mean = 0
for i in range(1000):  # 我把试验次数加到一千,这样数据更准点
    count = 0 # 计数
    random.shuffle(girl)   # 打乱
    for j in girl:
        if j == 0:
            count += 1
        else:
            break
    girl_imp = 1 -count / obj
    #print(f'在第{count}次找到,找到的概率为{girl_imp}')
    girl_mean += girl_imp / 1000
print(f'实验一千次平均概率{girl_mean }')

实验一千次平均概率0.4912528571428572

好友问道,这数据啥意思,我得经过我这辈子一半多女性才能找到真爱??? 那我不就三十多出头才有初恋啊。。你得用你的那三七法则帮帮我

这一波我们系统的讲一讲什么是三七法则,不然有人说我水文章,这就很可怕,所谓三七法则,就是利用欧拉算出来的这个数字37来展开计算的,换成这里,那我们就得改改,我的朋友现在20岁了,估摸着把他这辈子的女性认识了三四百左右吧,那原始数组就没有这么多,那我们改改。

import random
obj = 700
girl = [0 for i in range(obj -1)]
girl.append(1)  

这样就做好了一个新数据,那剩下的七百人,我们要怎么操作呢,700 * 0.37 = 259 用法则来说,0 - 259 个女生,我的朋友只是交往但是不结婚,等到第260个女孩,如果遇到一个比前面好的或者差不多的就赶紧抓住,哈哈哈,这前提是我好友有钞能力!我们笑笑就行了。

  • 那我们用代码看看到底怎么回事
random.shuffle(girl)
count = 0
for i in range(260, obj):  #  先做一次实验看看
    if girl[i] == 0:
        count += 1
    else:
        break
print(f'在第{count}次找到女孩,概论为{1 - count / obj}')
在第48次找到女孩,概论为0.9314285714285714

这下我的好友嘴角流出了泪水,开始得意忘形了,我们还是严谨一点 多几次实验看看

girl_mean = 0  # 平均数
for i in range(1000):  # 一千次实验走起
    random.shuffle(girl)
    count = 0
    for j in range(260, obj):
        if girl[j] == 0:
            count += 1
        else:
            break
    girl_imp = 1 - count / obj
    girl_mean += girl_imp / 1000
print(f'实验一千次的概论结果{girl_mean}')
实验一千次的概论结果0.5736514285714309

这样的操作 数据就比之前的高一点,我的朋友看完也终于舒坦了一点,其实我也不担心他,相反我还比较担心我自己,我还没把颜值系数,家产系数加上去,我觉得加上去,我可能还没他高,哈哈哈。

好友问道,那你怎么搞定我打游戏连跪?? 没搞定你别想走
就你玩的鲁班七号, 那还不是让对面吉吉国王乱杀的节奏,给钱我就带你打几吧?? 或者你喊我爸爸?? 哈哈哈哈

本文图个乐就行哈,别太较真啦!

在这里插入图片描述

发布了15 篇原创文章 · 获赞 282 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_45906219/article/details/105443789