最大的麦穗的两个解37和13

最大的麦穗的两个解37和13

import numpy as np

# 数学证明k=n/e=n/2.7,也即是说k=0.37n,这里n=100,k=37

# 理论上来讲应该在37%作为分界线是最好的,本程序尝试验证这个数,使用正态分布的数据才能验证而平均分布数据不行
def f1(li,index):
    # 输入数组和分界,返回这个策略能挑到的那颗麦穗高度
    size=len(li)
    best=li[0] # 暂存在心中的最大标准

    # 拿index作为分界线,前面的只挑不选,后面的看到有超过的就选

    for i in range(0,index):
        if li[i]>best:
            best=li[i]

    for i in range(index,size):
        if i==size-1:
            return li[i]
        else:
            if li[i]>best:
                return li[i]
if __name__ == '__main__':
    # tries = 10000
    # mydi = {i: 0 for i in range(1, 100)}#键是分界线,值是累计拿到的麦穗的高度之和
    #
    # for i in range(tries):
    #     li = np.random.randn(100)
    #     for index in range(1,100):
    #         mydi[index]+=f1(li,index)
    #
    # print(mydi)
    # print(max(mydi, key=mydi.get))
    # 令人惊讶的是得到13,这里是算能找到的值平均最大的,并不是算能找到最大值的概率最大的



    tries = 10000
    mydi = {i: 0 for i in range(1, 100)}# 键是分界线,值是最大的麦穗命中次数。拿这个来统计
    for i in range(tries):
        li = np.random.randn(100)#生成正太分布数组来模拟现实生活的麦穗,而不是平均分布
        max_num = max(li)#最大的麦穗高度
        for index in range(1, 100):
            if f1(li,index)==max_num:#如果这个index分界能命中最大的麦穗,那么就增加一次命中记录
                mydi[index]+=1


    print(mydi)
    key_name = max(mydi, key=mydi.get)
    print(key_name)


    # 某一次的最大麦穗命中的参考结果
    # result={1: 5195, 2: 8362, 3: 11019, 4: 13393, 5: 15656, 6: 17588, 7: 19239, 8: 20816, 9: 22268, 10: 23662, 11: 24952,
    #  12: 26041, 13: 27129, 14: 28072, 15: 29007, 16: 30005, 17: 30794, 18: 31487, 19: 32185, 20: 32833, 21: 33516,
    #  22: 34024, 23: 34494, 24: 34940, 25: 35317, 26: 35692, 27: 36048, 28: 36324, 29: 36601, 30: 36931, 31: 37146,
    #  32: 37286, 33: 37412, 34: 37462, 35: 37487, 36: 37516, 37: 37582, 38: 37522, 39: 37398, 40: 37289, 41: 37134,
    #  42: 37001, 43: 36828, 44: 36625, 45: 36363, 46: 36079, 47: 35904, 48: 35646, 49: 35366, 50: 35064, 51: 34742,
    #  52: 34388, 53: 34029, 54: 33648, 55: 33272, 56: 32875, 57: 32370, 58: 31898, 59: 31409, 60: 30899, 61: 30389,
    #  62: 29891, 63: 29343, 64: 28737, 65: 28190, 66: 27595, 67: 27021, 68: 26410, 69: 25856, 70: 25241, 71: 24561,
    #  72: 23834, 73: 23195, 74: 22497, 75: 21751, 76: 21002, 77: 20203, 78: 19504, 79: 18746, 80: 17914, 81: 17087,
    #  82: 16339, 83: 15575, 84: 14786, 85: 13942, 86: 13060, 87: 12209, 88: 11296, 89: 10443, 90: 9620, 91: 8731,
    #  92: 7788, 93: 6821, 94: 5882, 95: 4990, 96: 4004, 97: 3080, 98: 2097, 99: 1073}

算法中,如何确定分界才能有最大的概率拿到最大的麦穗呢?这时候是37,就是在37之前只看不拔,并且遇到大的就默默在心里记下这个标准。等到过了37之后,一旦遇到比标准大的就马上拔。

但是令人惊讶的是13这个数字。因为虽然37能最大概率得到最大的麦穗,但是13才是的得到麦穗的平均高度最大的那个分界。37就像是富贵险中求,得到最大值的概率是最高的。但是得到13才是稳扎稳打,13虽然得到最大麦穗的概率不高,但是13最有可能得到较大的麦穗,并且这个期望平均下来比37的要好

总结:稳扎稳打追求较大的麦穗选13分界。最有可能得到最大的麦穗选37但是相比13来说风险高容易两极分化。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值