從世界杯競猜騙局談二分法
四年一度的足球盛典——世界杯即將在本月14號響起號角,32路豪門躍躍欲試。
世界杯的影響范圍已經(jīng)不僅僅局限于球迷之間,更是輻射了以球場為中心的一大片商業(yè)活動,其中之一就是賭球。
世界杯鳴鑼開哨,想必各大博彩網(wǎng)站早已恭候多時(shí),同時(shí)各大天臺上也開始預(yù)訂站席。
這是一場球迷的狂歡,同時(shí)也是騙子的節(jié)日。今天來聊一聊一個著名的經(jīng)典騙局。
小劉是一名鐵桿球迷,同時(shí)也是博彩愛好者。2014年小組賽期間,他憑著自己的感覺參與了多次投注,都是小虧小賺。他看著網(wǎng)上各路大神賺得盆滿缽滿,心里很是癢癢,憑什么大家都看了這么些年球,有的人能如此順風(fēng)順?biāo)?,難道真的是有內(nèi)幕嗎?
16進(jìn)8的八分之一決賽就要開始了,小劉突然收到一份匿名郵件,上面赫然寫著自己有內(nèi)幕消息,可以預(yù)測比賽的勝負(fù),為了證實(shí)自己的預(yù)測能力,將免費(fèi)發(fā)送4場比賽的預(yù)測結(jié)果,下面一場哥倫比亞踢烏拉圭,哥倫比亞準(zhǔn)贏。
小劉覺得完全就是無稽之談,我蘇神蘇亞雷斯豈是浪得虛名?隨后不屑地點(diǎn)擊了刪除鍵。
神奇的是那場比賽哥倫比亞真的以2:0大勝烏拉圭。小劉一邊吐槽著一邊想起了前幾天的郵件,覺得這件事好像有點(diǎn)蹊蹺。不過僅僅是一場比賽而已,猜對的概率有50%,郵件可能是蒙對的吧!
過了幾天小劉又收到幾份郵件,成功地預(yù)測了荷蘭戰(zhàn)勝墨西哥,法國戰(zhàn)勝尼日利亞,阿根廷戰(zhàn)勝瑞士, 這4場比賽每次都預(yù)測正確 !
這下子小劉坐不住了! 這怎么可能?! 這個神秘郵件的背后一定有內(nèi)幕消息!
四分之一決賽第一場,德國和法國之戰(zhàn)打響之前,小劉又收到了郵件,這次郵件里斷定德國獲勝,并聲明這是最后一次免費(fèi)預(yù)測,想要得知后續(xù)的勝負(fù)情況,需要匯款一萬元或者支付若干比特幣。
小劉這次大膽了一些,他押寶2000元在德國隊(duì)身上,那場比賽十分緊張,但小劉心里居然多了一絲穩(wěn)健。90分鐘的膠著之后,德國隊(duì)獲勝。小劉賺到了10000元。
金錢使他徹底信服了,賭徒心態(tài)沖昏了他的理智,他毫不猶豫地匯款一萬給郵件里的賬戶。
四分之一決賽一共四場,“神秘郵件”全部猜中,小劉不但將成本全部收回,還凈賺近10萬。
但后來事情的發(fā)展就不像他想象的那樣了,半決賽中,小劉將自己的全部身家按照郵件提示押在巴西身上,結(jié)果德國7:1豪取巴西。
在去天臺的路上,小劉還是想不通,為什么會這樣呢?
騙子其實(shí)只用到了一個最簡單的二分法思想。
假設(shè)有50萬真球迷(已經(jīng)很保守了,偽球迷排除哈哈),1/8決賽有8場,1/4決賽有4場,半決賽有2場,決賽有1場。
- 1/8決賽有8場,不必每場都發(fā),選擇其中比較熱門的4場,最終將會有31250(5000000/16)人收到四次完全正確的郵件,而他們也即將成為你的潛在付費(fèi)用戶。
- 1/4決賽第一場提供最后一次免費(fèi)預(yù)測,并開始提及收費(fèi)。此時(shí)可以在郵件中提供主流博彩網(wǎng)站的當(dāng)前賠率,刺激用戶欲望。最終將會剩下15625名潛在付費(fèi)用戶。
- 經(jīng)過5次的洗腦,相信會有很多“小劉”甘愿為此掏錢。
本文的目的是為了預(yù)防詐騙,不支持任何形式的詐騙行為,在這些高利潤的同時(shí),中國法律請務(wù)必了解一下!
下面來寫一寫代碼實(shí)現(xiàn)一下這種二分算法。
這是一種最典型的二分查找,在一個數(shù)組中查找一個數(shù)值是否存在。時(shí)間復(fù)雜度為O(logN)
Python實(shí)現(xiàn)
下面就上面的騙局,做一個簡單的實(shí)現(xiàn):
- #假設(shè)這個函數(shù)用來篩選用戶
- def filter(users,team_name):
- filter_users={}
- start = min(users.keys())
- end = max(users.keys())
- for i in range(start,end):
- if users[i]==team_name:
- temp_user={}
- temp_user[i]=users[i]
- filter_users.update(temp_user)
- return filter_users
- #假設(shè)這個函數(shù)發(fā)郵件
- def send_email(user,email_content):
- start=min(user.keys())
- end=max(user.keys())
- flag=(start+end)/2
- for i in range(start,end):
- if i<flag:
- user[i]+=email_content[0]
- else:
- user[i]+=email_content[1]
- return user
- if __name__ == '__main__':
- #用戶字典
- users={}
- #初始化1萬個用戶
- for i in range(0,10000):
- users[i]=""
- #第一輪發(fā)送郵件的內(nèi)容
- email_content_1=["哥倫比亞","烏拉圭"]
- #發(fā)送郵件
- user=send_email(users,email_content_1)
- #比賽結(jié)束,知道勝者為哥倫比亞,篩選用戶
- users=filter(users,"哥倫比亞")
- #第二輪郵件內(nèi)容
- email_content_2 = ["比利時(shí)", "美國"]
- #發(fā)送第二輪郵件
- users=send_email(users,email_content_2)
- # 比賽結(jié)束,知道勝者為比利時(shí),篩選用戶
- users = filter(users, "哥倫比亞比利時(shí)")
- print(users)
此時(shí),0-2500編號的用戶,是你的潛在付費(fèi)用戶。
可能有讀者覺得這么低級的騙局怎么可能騙的了人,我最初也是這么想的。不過在看到新聞上各種騙局后,我真的覺得騙子實(shí)在不夠用了。一句不恰當(dāng)?shù)囊茫?ldquo;姜太公釣魚,愿者上鉤”。
二分法在生活中的用處非常廣,就比如我寫了一篇文章,但發(fā)表時(shí)總是提示存在敏感字符,一篇2000字的文章中如何去查找呢?用二分法,基本上你只要嘗試5次,就能找到了。
最后有人問我即將到來的世界杯怎么看,我當(dāng)然是不要慫一把梭,買中國隊(duì)啦。
【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號coderising獲取授權(quán)】