男女配对问题

import random
l1=[]
for x in range(10000):
    l1.append(int(random.normalvariate(50,20)))
l2=[(x,x+int(random.normalvariate(5,10)))for x in l1]
lnan1=[]
for x in range(10000):
    lnan1.append(int(random.normalvariate(50,30)))
lnan2=[(x,x-int(random.normalvariate(3,5)))for x in lnan1]

def duibi(a1,b1):
    lv=a1
    ln=b1
    l3=[]
    l4=[]
    for x in range(len(lv)):
        if lv[x][0]>ln[x][1]  and ln[x][0]>lv[x][1]:
            pass
        else:
            l3.append(lv[x])
            l4.append(ln[x])
            #女性数列随机排列用于下一次比较
            random.shuffle(l3)
    return l3,l4

def cishuhoujieguo(n,a,b):
    s1=0
    s2=0
    a,b=(a,b)
    for x in a:
        s1 += x[0]
        s2 += x[1]
        g=len(a)
        d_1=s1//g
        d_2=s2//g
        print(('第%d后,剩余%d')%(n,g))
        print('平均分',d_1)
        print('平均要求',d_2)
    return n-1,a,b


if __name__=='__main__':
    a,b=duibi(l2,lnan2)
    for x in range(200):
        c,d=duibi(a,b)
        a,b=duibi(c,d)
        cishuhoujieguo(500,a,b)
    print(a,b,c,d)

代码的核心思想是通过正太分布的随机数 给女性男性自身价值赋予随机分数 再给自己对方的期望价值赋予不同的分数,区别是女性期望更高,男性期望不变或者略低。 加入期望都符合 那就配对成功

《男女配对问题》

    原文作者:舞伴问题
    原文地址: https://blog.csdn.net/cywtiancai/article/details/80972814
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞