作者 | 天元浪子
来源 | CSDN(ID:CSDNnews)

先声明一下:本文纯属七夕应景娱乐之作。如果有人因为遵循本模型提出的择偶理论而导致失恋或单身,除了同情,我不能补偿更多。

在中国的传统节日里,七夕可能是起源最神秘、内涵最深刻的一个了。当然,这不是本文的重点,我们的核心问题是:在七夕这个特有纪念意义的日子,你真的想好了要向TA表白吗?TA 真的是你唯一正确的选择吗?这个婚介模型,也许对你有一些启发。

我的婚介所生意兴隆,无数想找到理想伴侣的单身人士都来光顾。根据颜值、人品、能力、财富等因素,我给每位客户确定了一个素质指数(Quality Index),简写为 qidx。统计发现,qidx 呈现均值 8.0、标准差 0.5 正态分布。

下面是1万客户的 qidx 统计分布图,可以看出绝大多数单身人士的 qidx 位于 7.0~9.0 之间,评价较为负面的和非常优秀的,都属于少数派。

import numpy as np
import matplotlib.pyplot as pltsingles = 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 的方差,按照正态分布随机生成。

通常,客户有两种方式从我为他们推荐的目标中做出选择。第一种是基于传统的择偶观念,具体规则如下:

  1. 有 10% 的客户会对当前的推荐目标一见钟情,不在意双方的 qid 是否匹配。

  2. 如果当前推荐目标的 qid 比客户高,但不超过 0.2,客户选择当前推荐目标的概率,会随剩余选择机会的减少而增加,大约从 0.35 升至 0.8。

  3. 如果当前推荐目标的 qid 比客户高 0.2 以上,客户选择当前推荐目标的概率,会随剩余选择机会的减少而增加,大约从 0.55 升至 1.0。

  4. 如果当前推荐目标的 qid 比客户低,但不超过 0.2,客户选择当前推荐目标的概率,会随剩余选择机会的减少而增加,大约从 0.25 升至 0.7。

  5. 如果当前推荐目标的 qid 比客户低 0.2 以上,求偶者选择当前目标的概率,会随剩余选择机会的减少而增加,大约从 0 升至 0.18。

第二种匹配方式则是基于“麦穗理论”,听起来很高大上。这里省略了关于麦穗理论的讲解,感兴趣的同学可以自行检索。具体说,就是客户在前 4 次的推荐中,不做出选择,只记下其中的最高的 qidx;从第 5 次开始,只要遇到大于或等于前 4 次最高 qidx 的推荐目标,就做出选择。

下面,我分别用两种匹配方式为 1 万名顾客选择配偶,结果会怎样呢?

# -*- encoding: utf-8 -*-import numpy as npclass Single:def __init__(self, qidx, times):self.times = times # 婚介所提供的匹配次数self.counter = 0 # 当前匹配次数self.qidx = qidx # 客户的qidxself.spouse = None # 匹配成功的配偶的qidxself.histroy = list() # 基于麦穗理论的前times/e次的推荐对象的qidxdef math_classical(self, spouse):self.counter += 1if np.random.random() < 0.1:self.spouse = spouseif spouse - self.qidx >= 0.2:if np.random.random() < 1-0.05*(10-self.counter):self.spouse = spouseelif spouse - self.qidx > 0:if np.random.random() < 0.8-0.05*(10-self.counter):self.spouse = spouseelif self.qidx - spouse >= 0.2:if np.random.random() < 0.18-0.02*(10-self.counter):self.spouse = spouseelif self.qidx - spouse >= 0:if np.random.random() < 0.7-0.05*(10-self.counter):self.spouse = spousedef match_technical(self, spouse):self.counter += 1if self.counter < self.times/np.e:self.histroy.append(spouse)elif spouse >= max(self.histroy):self.spouse = spousedef 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')

比较两种方案的匹配成功率、匹配成功的客户的平均 qids、匹配成功的客户配偶的平均 qids、客户和配偶的 qids 的方差等,你会发现,这个结果真的有点意思。

基于传统方式择偶的统计结果
----------------------------------
成功匹配10000人,成功率100.00%
客户qidx均值8.00,配偶均值8.02
匹配方差0.01,匹配标准差0.10基于麦穗理论择偶的统计结果
----------------------------------
成功匹配7138人,成功率71.38%
客户qidx均值8.00,配偶均值8.11
匹配方差0.00,匹配标准差0.07

结论:

  1. 基于传统方式的择偶,成功率更高(100% VS 71.38%);

  2. 基于麦穗理论择偶,配偶素质指数更高(8.11 VS 8.02);

  3. 基于麦穗理论择偶,双方qids差的标准差更小(0.07 VS 0.10),这意味着双方匹配更好。

声明:本文为 CSDN 博主「天元浪子」的原创稿件,版权归作者所有。
原文地址:https://blog.csdn.net/xufive/article/details/108214016

更多精彩推荐
  • 鸿蒙加海思,麒麟加龙芯,组合拳能否渡劫“生态”危机

  • 用 Python 详解《英雄联盟》游戏取胜的重要因素!

  • 万字长文总结机器学习的模型评估与调参 | 附代码下载

  • “Talk is cheap, show me the code”你一行代码有多少漏洞?

  • 科普 | 定义 Eth2.0 中的验证者质量

昨天,我用 Python 写了一个婚介模型相关推荐

  1. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  2. 用 python 写了一个日记本

    写一个随机任务抽取器 一.前言 二.逻辑构思 2.1 目标实现 2.2 搭建开发环境 2.3 Pyinstaller 打包 三.效果展示 3.1 初始化和添加日记 3.2 查看日记 3.3 删除日记 ...

  3. python卖水果_小姨开水果店的,所以今天用Python写了一个水果店小系统!

    原标题:小姨开水果店的,所以今天用Python写了一个水果店小系统! 前言 今天晚上才刚下班,小姨就提了我最爱吃的榴莲过来,说不吃就坏了. 我一眼就看破了她的用意,哈哈哈 我这个小姨也是一起长大的,她 ...

  4. 用python写的一个简易的云音乐播放器

    本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到. #co ...

  5. 用python写了一个简易的记账软件,后期有可能更新!

    记账程序由来 曾经在iOS14的快截指令中写了一个快捷指令用来记账,但是由于快捷指令的限制,只能把数据记录到备忘录或者numbers,数据的迁移性很差.所以最后干脆用python写了一个程序 程序介绍 ...

  6. 用Python写了一个电子考勤系统!

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  7. 耗时半年,用 Python 写了一个电子考勤系统

    今天给大家分享一个比较有意思的 Python 应用,用 Python 写了一个电子考勤系统,源码获取在下方文章中给出,记得点赞收藏哦- 文章目录 电子考勤完整代码 项目简介 答题要求 附加功能 导入模 ...

  8. 用 Python 写了一个电子考勤系统!

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  9. python股票全套系统_熬了一晚上,小白用Python写了一个股票提醒系统

    码农小马七夕节去相亲了,见了一个不错的姑娘,长的很是甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!可是突然想起年初还有几万块在股市里面 ...

最新文章

  1. 综合布线管理系统之智能配线架的过去与将来
  2. lightoj 1031 区间dp
  3. java编程最新图书_清华大学出版社-图书详情-《Java程序设计》
  4. 对于scanf的使用一点体会心得
  5. np.random的随机数函数
  6. c 语言 pthread_create_哪种编程语言又快又省电?有人对比了27种语言
  7. 部署 shell Linux
  8. 喵哈哈村的魔法考试 Round #14 (Div.2) 题解
  9. 简单个人网页制作 大学生网页设计作业 静态HTML个人博客主页 DW个人网站模板下载 大学生简单个人网页作品代码
  10. ZZULIOJ:1047: 对数表
  11. @DependsOn
  12. 怎么改自己手机的ip地址
  13. 【Unity2D入门教程氵篇】简单制作一个弹珠游戏之制作场景④(设置不可破坏砖块,发布游戏设置)
  14. plc虚拟服务器,VMware软件虚拟机和PLC通讯的连接方法
  15. 获取局域网远程主机ipv6地址
  16. selenium模拟登陆之截屏验证码位置跑偏
  17. 创业教父YC创始人Paul Graham就很烦鼓动年轻创业的
  18. SHT30 温湿度传感器 使用示例
  19. 曙光服务器怎么进入bios_在安装电脑系统进入bios界面时应该如何设置?怎么在bios界面把硬盘格式化?求电脑高手帮个忙!谢谢了… 曙光电脑进入bios...
  20. SAP中SD交货与WM下架功能的集成应用

热门文章

  1. IOS自定义表格UITableViewCell
  2. 第一章 软件自动化测试的基础知识
  3. linux 在执行命令过程中,反单引号(`)这个符号代表的意义为何?
  4. poj 1681 Painter#39;s Problem(高斯消元)
  5. cocos2dx 3.x(动态改变精灵的背景图片)
  6. python依赖包exe文件安装问题
  7. 图片下方出现几像素的空白间隙
  8. 华胜天成ivcs云系统初体验2
  9. 修改Vista系统目录权限
  10. 解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”...