昨天,我用 Python 写了一个婚介模型


来源 | CSDN(ID:CSDNnews)
import?numpy?as?np
import?matplotlib.pyplot?as?plt
singles?=?np.random.normal(loc=8.0,?scale=0.5,?size=10000)
plt.hist(singles,?bins=8,?histtype='step')
plt.show()

一般情况下,我的客户缴费 1 次,将获得有 10 次选择机会。我向客户推荐目标的策略基于“门当户对”,总是选择和客户的 qidx 相适应的异性,具体说就是以客户的 qidx 为均值,以 0.1 的方差,按照正态分布随机生成。
有 10% 的客户会对当前的推荐目标一见钟情,不在意双方的 qid 是否匹配。 如果当前推荐目标的 qid 比客户高,但不超过 0.2,客户选择当前推荐目标的概率,会随剩余选择机会的减少而增加,大约从 0.35 升至 0.8。 如果当前推荐目标的 qid 比客户高 0.2 以上,客户选择当前推荐目标的概率,会随剩余选择机会的减少而增加,大约从 0.55 升至 1.0。 如果当前推荐目标的 qid 比客户低,但不超过 0.2,客户选择当前推荐目标的概率,会随剩余选择机会的减少而增加,大约从 0.25 升至 0.7。 如果当前推荐目标的 qid 比客户低 0.2 以上,求偶者选择当前目标的概率,会随剩余选择机会的减少而增加,大约从 0 升至 0.18。
#?-*-?encoding:?utf-8?-*-
import?numpy?as?np
class?Single:
????def?__init__(self,?qidx,?times):
????????self.times?=?times?#?婚介所提供的匹配次数
????????self.counter?=?0?#?当前匹配次数
????????self.qidx?=?qidx?#?客户的qidx
????????self.spouse?=?None?#?匹配成功的配偶的qidx
????????self.histroy?=?list()?#?基于麦穗理论的前times/e次的推荐对象的qidx
????def?math_classical(self,?spouse):
????????self.counter?+=?1
????????if?np.random.random()?<?0.1:
????????????self.spouse?=?spouse
????????if?spouse?-?self.qidx?>=?0.2:
????????????if?np.random.random()?<?1-0.05*(10-self.counter):
????????????????self.spouse?=?spouse
????????elif?spouse?-?self.qidx?>?0:
????????????if?np.random.random()?<?0.8-0.05*(10-self.counter):
????????????????self.spouse?=?spouse
????????elif?self.qidx?-?spouse?>=?0.2:
????????????if?np.random.random()?<?0.18-0.02*(10-self.counter):
????????????????self.spouse?=?spouse
????????elif?self.qidx?-?spouse?>=?0:
????????????if?np.random.random()?<?0.7-0.05*(10-self.counter):
????????????????self.spouse?=?spouse
????def?match_technical(self,?spouse):
????????self.counter?+=?1
????????if?self.counter?<?self.times/np.e:
????????????self.histroy.append(spouse)
????????elif?spouse?>=?max(self.histroy):
????????????self.spouse?=?spouse
def?main(math_mode,?total=10000,?times=10):
????#?生成总数为total的客户,其qids有正态随机函数生成
????singles?=?[Single(np.random.normal(loc=8.0,?scale=0.5),?times)?for?i?in?range(total)]
????for?p?in?singles:
????????for?i?in?range(10):
????????????if?p.counter?<?10?and?not?p.spouse:
????????????????spouse?=?np.random.normal(loc=p.qidx,?scale=0.1)
????????????????getattr(p,?math_mode)(spouse)
????matched?=?np.array([(p.qidx,?p.spouse)?for?p?in?singles?if?p.spouse])
????diff?=?matched[:,0]?-?matched[:,1]
????print('----------------------------------')
????print('成功匹配%d人,成功率%0.2f%%'%(matched.shape[0],?matched.shape[0]*100/total))
????print('客户qidx均值%0.2f,配偶均值%0.2f'%(np.sum(matched[:,0])/matched.shape[0],?np.sum(matched[:,1])/matched.shape[0]))
????print('匹配方差%0.2f,匹配标准差%0.2f'%(diff.var(),?diff.std()))
????print()
if?__name__?==?'__main__':
????print('基于传统方式择偶的统计结果')
????main('math_classical')
????print('基于麦穗理论择偶的统计结果')
????main('match_technical')
基于传统方式择偶的统计结果
----------------------------------
成功匹配10000人,成功率100.00%
客户qidx均值8.00,配偶均值8.02
匹配方差0.01,匹配标准差0.10
基于麦穗理论择偶的统计结果
----------------------------------
成功匹配7138人,成功率71.38%
客户qidx均值8.00,配偶均值8.11
匹配方差0.00,匹配标准差0.07
结论:
基于传统方式的择偶,成功率更高(100% VS 71.38%);
基于麦穗理论择偶,配偶素质指数更高(8.11 VS 8.02);
基于麦穗理论择偶,双方qids差的标准差更小(0.07 VS 0.10),这意味着双方匹配更好。
声明:本文为 CSDN 博主「天元浪子」的原创稿件,版权归作者所有。
原文地址:https://blog.csdn.net/xufive/article/details/108214016

更多精彩推荐
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








AI100
