建模追女孩

模型假设:
一个女生愿意在一段时间中和一个男生开始一段感情
N个男生追求这个女生,需要女生根据自己条件判断
在追求者中,男生有好有坏,任何两个男生都可以比较,且没有相等情况
1 2 3 … . N (编号数字越大越表明这个男生越适合这个女生)。

N种
在什么情况之下开始答应男孩子的追求。

实际复杂的问题,建模要简单化,做出合理建议:
N个男生以不同的随机顺序向女生依次表白
面对表白的男生,女生只能做两种选择:接受 拒绝
任一时刻,女生最多只能跟一位男生交往
已经被拒绝的男生不会再次追求女生
女生什么时候愿意接受。

建立模型:
1、有男生像女生进行表白,这个女孩接受 1/N
2、聪明的女生想办法:
先和前面几位男生玩一玩,试试水深,打指模请男生们的底细,在进行考虑
最先表白的m个人都会拒绝,——最好的男生是哪位,他的底细
以后遇到男生表白,男生的底细超过前m个人中最好的那一个,女生接受表白
(先拒绝前m个,不管这些人的好坏,从m+1开始,一旦有比前面m个人好,就选择)
P时最好的男生(m小于P小于N)
前P-1个人中最好的人在m中,m/(P-1)
当数字N出现在第P个位置,(m<=N),如果使上述的第一选择接受
遇到的是N,排列的方式要满足的条件:
N在第P个位置
从m+1到P+1的位置数字要比前m个位置的最大数字要小
m=N/e(e=2.718) 1/e=37%
拒绝前m=N/e或N/e+1个追求者
当气候的追求者比前面m个追求者更适合则接受,否则拒绝

import random
import math
person = 30
married = {}
for i in range(1,person+1):
    married[i] = 0
top = int(round(person/math.e))
for i in range(1,10001):
    white_horse = list(range(1,person+1))
    random.shuffle(white_horse)
    best_in_k = max(white_horse[1:top_k])
    for n in white_horse[top_k]:
        if n>best_in_k:
            married[n] = married[n]+1
            break
        else:
            married[n] = married[n]+1
print(married)

white_horse = list(range(1,person+1))
print(white_horse)
random.shuffle(white_horse)
print(random.shuffle)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值