您好,登錄后才能下訂單哦!
這篇文章主要介紹“python怎么實現商業街抽獎”,在日常操作中,相信很多人在python怎么實現商業街抽獎問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python怎么實現商業街抽獎”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
模擬實驗與分析
對于出現的問題,首先通過python進行模擬實驗,看看一百次抽獎中會出現多少次一等獎。
import pandas as pd
from collections import Counter
choujiang = pd.Series(["未中獎","一等獎"])
cnt = Counter(choujiang.sample(n=100,replace=True,weights=([99,1])))
cnt
sample為pandas中函數,功能為隨機抽樣;
replace=True表示有放回的抽樣;
weights表示取值權重;
Counter為collections中函數,功能為計算array中不同值的取值個數。
運行三次,結果分別為:
Counter({'一等獎': 1, '未中獎': 99})
Counter({'未中獎': 100})
Counter({'一等獎': 2, '未中獎': 98})
結論,中獎概率為1%,不代表抽100次必然出現1次一等獎。
上例為模擬了100次1%中獎率的電子抽獎,把這個模擬重復7次,即為1周內的抽獎情況模擬。用電腦模擬1000周的抽獎結果,就可以統計1000周里,出現5次一等獎的周數。
import numpy as np
#模擬1000周的抽獎情況
a = np.zeros(1000)
for i in range(1000):
for j in range(7):
a[i] = np.sum(choujiang.sample(n=100,replace=True,weights=([99,1]))=="一等獎")+a[i]
#畫出直方圖
import pylab
pylab.hist(a, bins=18, normed=0,edgecolor='black',facecolor='blue',alpha=0.75)
pylab.show()
np.transpose(Counter(a))
模擬1000周的抽獎情況,并計算抽中一等獎的次數,畫出直方圖。圖中,橫軸表示出現一等獎的次數,縱軸表示周數。
array(Counter({7.0: 151, 6.0: 140, 8.0: 138, 5.0: 130, 9.0: 96, 4.0: 91, 10.0: 81, 3.0: 53, 11.0: 37, 12.0: 26, 2.0: 23, 13.0: 13, 14.0: 7, 1.0: 7, 15.0: 3, 0.0: 3, 18.0: 1}), dtype=object)
上面結果為圖中的頻率分布情況,可以看出,一周內出現5次一等獎的一共有130周,130除以1000,為13%,即出現5次一等獎的周數占整體的13%。如果出現5次算有詐,那出現小于5次的也為有詐,則占總體的30%,概率過大,因此,不能單憑1周內只開出5次一等獎認為抽獎有詐。
幾個小概念
概率:對于例子中對抽獎而言,中獎概率為1%,但是抽700次不一定出現7次大獎。
頻率分布表:統計與某個數值一致的數據的個數,或者屬于某數值范圍內的數據的個數,然后將這些統計值制成一覽表。
直方圖:圖形化的頻率分布表。
數據的分布:如果將數據劃分為若干個范圍,那么數據在各個范圍內的散布情況就成為分布。就大部分數據而言,平均值所在的范圍頻率最高,與平均值相差越大的范圍頻率越低。
到此,關于“python怎么實現商業街抽獎”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。