使用Python計(jì)算玩彩票贏錢概率
工具:Jupyter notebook + Anaconda
游戲規(guī)則:時(shí)時(shí)彩一種玩法是買尾號。2元一個(gè)數(shù)字,中獎是20元。每個(gè)數(shù)字出現(xiàn)的概率相等。
目前想到兩種買法:
- 隨機(jī)購買,人是感性動物,很容易受周圍環(huán)境干擾。完全隨機(jī)購買在生活中是不存在的。
- 分析數(shù)字在前面N期出現(xiàn)的概率,選擇概率最小的n個(gè)數(shù)字購買。
導(dǎo)入包
import numpy as np
定義玩法一:完全隨機(jī)購買
def play_lottery(my_money,play_num,money):
'''
隨機(jī)選擇數(shù)的中獎率
result:結(jié)果字典
num:用于統(tǒng)計(jì)每個(gè)數(shù)字出現(xiàn)次數(shù)
my_money:我的余額
play_num:投注期數(shù)
money:投注額
flag: 1代表贏錢 0則相反 2表示不輸不贏
'''
flag = 1
temp = my_money
result = {'0':0,
'1':1,
'2':2,
'3':3,
'4':4,
'5':5,
'6':6,
'7':7,
'8':8,
'9':9}
data = np.random.randint(0,10,(play_num,1))
num = np.zeros((10,1))
for i in data:
play = np.random.randint(0,10,(5,1))
if i in play:
temp = temp + money
else:
temp = temp - money
if result[str(i[0])] == i[0]:
num[i[0]] = num[i[0]] + 1
print('我的余額:',temp)
print('開獎結(jié)果統(tǒng)計(jì):\n',num[0][0],num[1][0],num[2][0],num[3][0],num[4][0],num[5][0],num[6][0],num[7][0],num[8][0],num[9][0])
if temp < my_money:
flag = 0
elif temp == my_money:
flag = 2
return flag
賭博代碼
i = 0 binary = np.zeros((3,1)) while i < 10000: binary[play_lottery(1000,10,10)][0] += 1 i = i + 1

可以看出輸:贏:平=6037:1886:2077
定義玩法二:按照概率購買
第一次購買,假設(shè)玩家已經(jīng)獲取到前面N期開獎號的中獎規(guī)律,不不不,應(yīng)該是前面N期的各個(gè)數(shù)字出現(xiàn)的次數(shù)。
方法如下:
def play_lottery2(my_money,play_num,money):
'''
隨機(jī)選擇數(shù)的中獎率
result:結(jié)果字典
num:用于統(tǒng)計(jì)每個(gè)數(shù)字出現(xiàn)次數(shù)
my_money:我的余額
play_num:投注期數(shù)
money:投注額
flag: 1代表贏錢 0則相反 2表示不輸不贏
'''
flag = 1
temp = my_money
result = {'0':0,
'1':1,
'2':2,
'3':3,
'4':4,
'5':5,
'6':6,
'7':7,
'8':8,
'9':9}
data = np.random.randint(0,10,(play_num,1))
num = np.zeros((10,1))
num_first = np.random.randint(0,10,(10,1))
is_one = 1
for i in data:
if is_one == 1:
play = np.argsort(num_first,axis=0).reshape(-1,1)[0:5]
is_one = 0
play = np.argsort(num,axis=0).reshape(-1,1)[0:5]
if i in play:
temp = temp + money
else:
temp = temp - money
if result[str(i[0])] == i[0]:
num[i[0]] = num[i[0]] + 1
print('我的余額:',temp)
print('開獎結(jié)果統(tǒng)計(jì):\n',num[0][0],num[1][0],num[2][0],num[3][0],num[4][0],num[5][0],num[6][0],num[7][0],num[8][0],num[9][0])
if temp < my_money:
flag = 0
elif temp == my_money:
flag = 2
return flag
賭博代碼
i = 0 binary = np.zeros((3,1)) while i < 10000: binary[play_lottery2(1000,10,10)][0] += 1 i = i + 1

可以看出按照概率購買之后比值為:
輸:贏:平=3733:3761:2506
相對之前完全隨機(jī)購買
輸:贏:平=6037:1886:2077
贏得幾率提升了不少,甚至贏>輸,說的我都想翹課買彩票了。
好了回到正題。珍愛生命,遠(yuǎn)離黃賭毒。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python連接SQL Server數(shù)據(jù)庫并實(shí)時(shí)讀取數(shù)據(jù)
在Python中,可以使用pyodbc庫來連接SQL Server數(shù)據(jù)庫,并使用pandas庫來進(jìn)行數(shù)據(jù)處理,下面我們就來講講如何實(shí)時(shí)讀取SQL Server數(shù)據(jù)庫表,并將數(shù)據(jù)寫入Excel文件,需要的可以參考下2023-12-12
Python自定義一個(gè)類實(shí)現(xiàn)字典dict功能的方法
今天小編就為大家分享一篇Python自定義一個(gè)類實(shí)現(xiàn)字典dict功能的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python圖像銳化與邊緣檢測之Sobel與Laplacian算子詳解
圖像銳化和邊緣檢測主要包括一階微分銳化和二階微分銳化,本文主要講解常見的圖像銳化和邊緣檢測方法,即Sobel算子和Laplacian算子,感興趣的可以了解一下2022-12-12
Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法詳解
這篇文章主要為大家詳細(xì)介紹了Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下2022-09-09
python json load json 數(shù)據(jù)后出現(xiàn)亂序的解決方案
今天小編就為大家分享一篇python json load json 數(shù)據(jù)后出現(xiàn)亂序的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

