一日,昔日好友惶恐至此,感概诸事不顺,游戏排位始终卡段,生活对象更是没有,我静静的看着他,从口袋里掏出一对象给他,并传授给他所谓三七法则。 -------沙漏在下雨的冷笑话
我最早接触所谓的三七法则还是在高中的辅导书上,那是一个很复杂的数学公式,最后得到的常数为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
这样的操作 数据就比之前的高一点,我的朋友看完也终于舒坦了一点,其实我也不担心他,相反我还比较担心我自己,我还没把颜值系数,家产系数加上去,我觉得加上去,我可能还没他高,哈哈哈。
好友问道,那你怎么搞定我打游戏连跪?? 没搞定你别想走
就你玩的鲁班七号, 那还不是让对面吉吉国王乱杀的节奏,给钱我就带你打几吧?? 或者你喊我爸爸?? 哈哈哈哈
本文图个乐就行哈,别太较真啦!