阅读 615

从一个竞猜骗局谈二分法

四年一度的足球盛典——世界杯即将在本月14号响起号角,32路豪门跃跃欲试。世界杯的影响范围已经不仅仅局限于球迷之间,更是辐射了以球场为中心的一大片商业活动。就从赌球来说吧,想必各大博彩网站早已恭候多时,同时各大天台上也开始预订站席。

这是一场球迷的狂欢,同时也是骗子的节日。就拿赌球来说,有这么一个经典的骗局。

小刘是一名铁杆球迷,同时也是博彩爱好者。2014年小组赛期间,他凭着自己的感觉参与了多次投注,都是小亏小赚。他看着网上各路大神赚得盆满钵满,心里很是痒痒,凭什么大家都看了这么些年球,有的人能如此顺风顺水,难道真的是有内幕吗?

偶然一次他收到一份匿名邮件,上面赫然写着自己有内部消息,下面一场哥伦比亚踢乌拉圭,哥伦比亚准赢。小刘觉得完全就是无稽之谈,我苏神苏亚雷斯岂是浪得虚名?随后不屑地点击了删除键。

然而后来那场比赛确实哥伦比亚2:0大胜乌拉圭。小刘一边吐槽着一边想起了前几天的邮件,觉得这件事好像有点蹊跷。

过了两天小刘又收到一份邮件,断定下一场美国败给比利时,小刘迟疑了,最终他还是经不住诱惑决定尝试一下,便投注了比利时500元,等待的时间是漫长的,好不容易等到了凌晨四点的比赛,这次小刘有点无心看球,心思全在那封邮件上。最终比赛的记分板停留在比利时2:1美国,小刘也应此赚到了2000,他觉得这真是天大的好事,背后有高人相助的感觉就是不一样,小刘开始期待着那封匿名邮件的到来。

四分之一决赛第一场,法国对战德国。果不其然,小刘又收到了邮件,这次邮件里断定德国获胜,并声明这是最后一次免费邮件,想要得知后续的胜负情况,需要汇款一万元或者支付若干比特币。

小刘这次大胆了一些,他将上次赢来的2000元押宝在德国队身上,那场球赛十分紧张,但小刘心里居然多了一丝稳健。90分钟的胶着之后,德国队获胜。小刘赚到了5000元。金钱使他彻底信服了,赌徒心态冲昏了他的理智,他毫不犹豫地汇款一万给邮件里的账户。

四分之一决赛中,小刘依靠“高人”相助直接将成本全部收回还倒赚几万。但后来事情的发展就不像他想象的那样了,半决赛中,小刘将自己几年的身家按照邮件提示押在巴西身上,结果德国7:1豪取巴西。

在去天台的路上,小刘还是想不通,为什么会这样呢?

骗子其实只用到了一个最简单的二分法思想。

假设有50万真球迷(已经很保守了,伪球迷排除哈哈),1/8决赛有8场,1/4决赛有4场,半决赛有3场,决赛有1场。

  1. 1/8决赛有8场,不必每场都发,选择其中比较热门的4场,最终将会有31250人收到四次完全正确的邮件,而他们也即将成为你的潜在付费用户。
  2. 1/4决赛第一场提供最后一次免费预测,并开始提及收费。此时可以在邮件中提供主流博彩网站的当前赔率,刺激用户欲望。最终将会剩下15625名潜在付费用户。
  3. 经过5次的洗脑,我相信会有很多“小刘”甘愿为此掏钱。

拓展:

  1. 可以开辟一小块试验田,使用多分,不仅仅判断胜负,而且发比分或净胜球,这一块作为高级vip提高收费标准。

本文的目的是为了预防诈骗,不支持任何形式的诈骗行为,在这些高利润的同时,中国法律请务必了解一下!

下面来写一写代码实现一下这种二分算法。

这是一种最典型的二分查找,在一个数组中查找一个数值是否存在。时间复杂度为O(logN)

数组长度 顺序查找次数O(N) 二分查找次数O(logN)
100 100 7
40亿 40亿 32

Python实现

def binary_search(list,target):
    #查找的起点和终点
    low=0
    high=len(list)-1
    #
    while (low<=high):
        #若low+high为奇数,则向下取整
        mid=(low+high)//2
        temp=list[mid]
        if target==temp:
            return mid
        elif temp>target:
            high=mid-1
        else:
            low=mid+1
    return None

if __name__ == '__main__':
    test_list=[1,2,4,5,12,32,43]
    print(binary_search(test_list,4))
    print(binary_search(test_list, 44))
复制代码

下面就上面的骗局,做一个简单的实现:

#假设这个函数用来筛选用户
def check(user,team_name):
    filter_user={}
    for i in range(0,len(user)):
        if user[i]==team_name:
            temp_user={}
            temp_user[i]=user[i]
            filter_user.update(temp_user)
    return filter_user

#假设这个函数发邮件
def send_email(user,email_content):
    flag=len(user)/2
    for i in range(0,len(user)):
        if i<flag:
            user[i]+=email_content[0]
        else:
            user[i]+=email_content[1]
    return user

if __name__ == '__main__':
    #用户字典
    user={}
    #初始化1万个用户
    for i in range(0,10000):
        user[i]=""
    #第一轮发送邮件的内容
    email_content_1=["哥伦比亚","乌拉圭"]
    #发送邮件
    user=send_email(user,email_content_1)
    #比赛结束,知道胜者为哥伦比亚,筛选用户
    user=check(user,"哥伦比亚")
    #第二轮邮件内容
    email_content_2 = ["比利时", "美国"]
    #发送第二轮邮件
    user=send_email(user,email_content_2)
    # 比赛结束,知道胜者为比利时,筛选用户
    user = check(user, "哥伦比亚比利时")
    print(user)
复制代码

此时,2500-5000编号的用户,是你的潜在付费用户。

可能有读者觉得这么低级的骗局怎么可能骗的了人,我最初也是这么想的。不过在看到新闻上各种骗局后,我真的觉得骗子实在不够用了。一句不恰当的引用:“姜太公钓鱼,愿者上钩”。

二分法在生活中的用处非常广,就比如我写了一篇文章,但发表时总是提示存在敏感字符,一篇2000字的文章中如何去查找呢?用二分法,基本上你只要尝试5次,就能找到了。

最后有人问我即将到来的世界杯怎么看,我当然是不要怂一把梭,买中国队啦。

文章分类
阅读
文章标签