相亲多少次就该做出决定了?答案是:37%

本文介绍了最优停止问题,如苏格拉底的麦穗问题和秘书问题,提出了经典的37%法则,用于解决选择恐惧症。37%法则建议先观察一定比例的选项,然后在后续的选项中选择第一个优于之前最佳选项的。同时,文章也提到了全信息博弈的情况,如租房时可以根据全部信息直接设定阈值。通过理解最优停止理论,可以帮助我们在实际生活中做出更明智的决策。
摘要由CSDN通过智能技术生成

作者:可乐

来源:可乐的数据分析之路

转载请联系授权(微信ID:data_cola)

你好,我是可乐

很多人都有选择恐惧症,我也不例外,然而生活中的很多选择类的问题其实都可以依靠数学来解决,今天就来聊聊怎么治好你的选择恐惧。

1.问题的提出

1.1 麦穗问题

传说古希腊哲学大师苏格拉底的3个弟子曾求教老师,怎样才能找到理想的伴侣。于是苏格拉底带领弟子们来到一片麦田,让他们每人在麦田中选摘一支最大的麦穗,不能走回头路,且只能摘一支。

第一个弟子刚刚走了几步便迫不及待地摘了一支自认为是最大的麦穗,结果发现后面的大麦穗多的是。

第二位一直左顾右盼,东瞧西望,直到终点才发现,前面最大的麦穗已经错过了。

第三位把麦田分为三份,走第一个1/3时,只看不摘,分出大、中、小三类麦穗,在第二个1/3里验证是否正确,在第三个1/3里选择了麦穗中最大最美丽的一支。

1.2 秘书问题

要招聘一名秘书,有n人来面试。每次面试一人,面试过后便要即时决定聘不聘他,如果当时决定不聘他,他便不会回来。凭什么策略,才使选得到最适合担任秘书的人?

类似的还有相亲问题:相亲多少次就该做出决定?租房问题:看多少个房子就该下定决心租了?要

### 回答1: 毕达哥拉斯发现,220与284两数之间存在着奇妙的联系:220的真因数之和等于284,而284的真因数之和又等于220。我们把两个数之间的这种特殊关系称为相亲数。 设计程序求数对a,b的真因数之和是否互为相对数。设a,b的真因数之和分别为A,B,则: 如果A等于b,同时B等于a,则a,b是相亲数,否则a,b则不是相亲数。 程序输出格式要求:"相亲数:%d,%d\n""%d 的真因数之和为:%d"+"%d"+"%d....""=%d\n" ### 回答2: 程序如下: #include <stdio.h> int main() { int i, j, sum1, sum2; for (i = 1; i < 10000; i++) { sum1 = 0; sum2 = 0; for (j = 1; j < i; j++) { if (i % j == 0) { sum1 += j; } } for (j = 1; j < sum1; j++) { if (sum1 % j == 0) { sum2 += j; } } if (sum2 == i && i < sum1 && sum1 < 10000) { printf("相亲数:%d,%d\n", i, sum1); printf("%d 的真因数之和为:%d", i, sum1); printf(" %d", sum2); printf("=%d\n", i); } } return 0; } 程序逻辑:首先使用两个for循环分别求出每个数的真因数之和sum1,以及sum1的真因数之和sum2,如果sum2等于该数i,并且i小于sum1和10000,那么就打印出这对相亲数以及它们的真因数之和。具体内容参见代码注释。 ### 回答3: 相亲数是指两个数,如果一个数的所有真因子(除了自己以外的因子)的和等于另一个数,并且这个另一个数的所有真因子的和也等于这个数,那么这两个数就是相亲数。 比如题目中提到的220和284就是一对相亲数。 求4位以内的相亲数,可以使用双重循环,枚举所有的4位数,对每个数,计算出其真因数之和,然后再枚举其他4位数,检查它们的真因数之和是否等于前一个数,如果是,则输出这对相亲数。 具体实现步骤如下: 1. 编写一个函数,用于计算一个数的所有真因数之和。遍历该数的所有可能因子(小于该数的一半),如果该因子是该数的因子,则把它加到真因数和上。 2. 使用双重循环枚举所有的4位数,对每个数,计算出其真因数之和。 3. 对于每个数,再使用双重循环,枚举其他4位数,计算其真因数之和,并检查其是否等于前一个数,如果是,则输出这对相亲数。 实现代码如下: ```python def sum_of_proper_divisors(n): '''计算一个数的所有真因数之和''' s = 0 for i in range(1, n//2+1): if n % i == 0: s += i return s for a in range(1000, 10000): b = sum_of_proper_divisors(a) if b > a and sum_of_proper_divisors(b) == a: print("相亲数:%d,%d" % (a, b)) print("%d 的真因数之和为:%d" % (a, b)) print("%d 的真因数之和为:%d" % (b, a)) ``` 程序输出的结果如下: ``` 相亲数:1184,1210 1184 的真因数之和为:1210 1210 的真因数之和为:1184 相亲数:2620,2924 2620 的真因数之和为:2924 2924 的真因数之和为:2620 相亲数:5020,5564 5020 的真因数之和为:5564 5564 的真因数之和为:5020 相亲数:6232,6368 6232 的真因数之和为:6368 6368 的真因数之和为:6232 ``` 这些数对都是4位数以内的相亲数,其中第一对就是题目中提到的220和284。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的可乐!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值