關(guān)于抽獎(jiǎng)概率的測(cè)試

? ? ? ? 一般的抽獎(jiǎng)管理功能,基本是在一個(gè)獎(jiǎng)池中放一堆獎(jiǎng)品,分別給它們?cè)O(shè)置不同的數(shù)量和概率,在獎(jiǎng)品沒(méi)有發(fā)完的情況下,概率高的被抽中的幾率就大,反之則低,獎(jiǎng)品被抽完后就不能再被抽中,另外,概率為0的不能被抽中,概率為100則一定要被抽中。

? ? ? ?實(shí)現(xiàn)抽獎(jiǎng)的算法很多。比較常見(jiàn)的抽獎(jiǎng)算法有三種:

? ? ? ?第一種:逢“幾”中獎(jiǎng),即通過(guò)預(yù)估抽獎(jiǎng)人數(shù)和獎(jiǎng)品數(shù)來(lái)判斷,“幾”=(抽獎(jiǎng)人數(shù)/獎(jiǎng)品數(shù))*N。這是一種最簡(jiǎn)單抽獎(jiǎng)算法,適合抽獎(jiǎng)人數(shù)眾多,而且互相無(wú)聯(lián)系的情況。如今大為流行的微博轉(zhuǎn)發(fā)得獎(jiǎng)就常常使用這種算法,即根據(jù)轉(zhuǎn)發(fā)次數(shù)來(lái)決定獎(jiǎng)品歸屬,透明而且具有激勵(lì)性。這種算法的優(yōu)點(diǎn)是非常簡(jiǎn)單,很容易實(shí)現(xiàn),缺點(diǎn)是當(dāng)可能產(chǎn)生無(wú)人中獎(jiǎng)和很多人中獎(jiǎng)的情況。

? ? ? ? 第二種:概率抽獎(jiǎng)。所謂概率抽獎(jiǎng)是最容易想到的抽獎(jiǎng)算法了,這個(gè)概率可以是一成不變的,也可以是一直在變化調(diào)整的,最難的是采用多大的概率,何種情況下采用何種概率。例如:把設(shè)定的中獎(jiǎng)概率從小到大排序(0.1、0.15、0.25、0.5),劃分區(qū)間([0,0.1]、(0.1,0.15]、(0.15,0.25]、(0.25,0.5]),每次抽獎(jiǎng)時(shí)代碼自動(dòng)生成一個(gè)隨機(jī)數(shù),當(dāng)隨機(jī)數(shù)在某個(gè)區(qū)間時(shí),就抽中某個(gè)獎(jiǎng)品。此種算法實(shí)時(shí)性強(qiáng),但計(jì)算機(jī)產(chǎn)生的隨機(jī)數(shù)是一個(gè)偽隨機(jī)數(shù),這就意味著,隨機(jī)數(shù)可能會(huì)連續(xù)相同,即同一個(gè)用戶可能會(huì)連續(xù)抽中某個(gè)獎(jiǎng)品。

? ? ? ? 第三種:依賴(lài)不可控的物理隨機(jī)數(shù)。利用各種不可控的數(shù)據(jù),根據(jù)算法,得到一組數(shù)字,通過(guò)某種規(guī)則,來(lái)得出中獎(jiǎng)則的號(hào)碼,比如體育彩票、大樂(lè)透之類(lèi)的,不可控的數(shù)據(jù)可能是上證指數(shù)......此種算法絕對(duì)公平、絕對(duì)透明,在現(xiàn)如今也比較流行,但是這種算法的唯一的缺點(diǎn)是無(wú)法實(shí)時(shí)抽獎(jiǎng)。

? ? ? ?以下主要介紹通過(guò)第二種抽獎(jiǎng)概率算法實(shí)現(xiàn)的抽獎(jiǎng)程序核心部分的測(cè)試:中獎(jiǎng)概率的校對(duì);獎(jiǎng)品不足,用戶并發(fā)抽獎(jiǎng)的情況。

一:程序中獎(jiǎng)概率的準(zhǔn)確性校對(duì)

? ? ? ? 概率的準(zhǔn)確性校對(duì),需要在獎(jiǎng)品數(shù)量無(wú)限充足的情況下測(cè)試。思路如下:先設(shè)定抽獎(jiǎng)概率,模擬大量抽獎(jiǎng)數(shù)據(jù),算出真實(shí)的抽獎(jiǎng)概率,再來(lái)比對(duì)設(shè)定的和真實(shí)的抽獎(jiǎng)概率之間的差距了,如果不超過(guò) 正負(fù)1%,那么程序概率是正確的。

具體操作方法如下:

1.在后臺(tái)管理系統(tǒng)中設(shè)置相應(yīng)抽獎(jiǎng)活動(dòng)各獎(jiǎng)品的抽獎(jiǎng)概率,并設(shè)定每個(gè)用戶的抽獎(jiǎng)概率次數(shù)足夠大

2.用jmeter工具模擬大量用戶進(jìn)行抽獎(jiǎng)

? a.因用戶抽獎(jiǎng)是在登陸狀態(tài)下進(jìn)行的,所以在jmeter中需要保留用戶的登陸狀態(tài)

b.用戶抽獎(jiǎng)

? ? 設(shè)定并發(fā)抽獎(jiǎng)的用戶數(shù)量,訪問(wèn)抽獎(jiǎng)接口 http://XX/game-mobile/intf/h5//turnTable/luckDraw?tableId=&ignoreCsrfToken=true

并監(jiān)控多用戶并發(fā)狀態(tài)下,確保抽獎(jiǎng)錯(cuò)誤率為0%

3.在mogodb中查詢當(dāng)天抽獎(jiǎng)總次數(shù),單個(gè)獎(jiǎng)品被抽中的次數(shù),計(jì)算實(shí)際中獎(jiǎng)概率

a.查詢數(shù)據(jù)并記錄在excel中

db.turntable_user_luckdraw.find({ "prizeType": "entity" }).count() ?

db.turntable_user_luckdraw.find({ "prizeType": "phone", "prizeValue": 10 ?}).count()

db.turntable_user_luckdraw.find({ "prizeType": "goldkey", "prizeNum": 1 }).count

b.計(jì)算實(shí)際中獎(jiǎng)概率

? ? ?=中獎(jiǎng)次數(shù)/抽獎(jiǎng)總次數(shù)

c.保證設(shè)置的抽獎(jiǎng)概率不變化,在jmeter中更改抽獎(jiǎng)的用戶數(shù)獲取多組用戶中獎(jiǎng)概率數(shù)據(jù)

并計(jì)算出單個(gè)獎(jiǎng)品中獎(jiǎng)的期望值和偏差值。

4.小結(jié)

? ? ? 比較 設(shè)置的中獎(jiǎng)概率和期望值的偏差 值,如若結(jié)果相差在正負(fù)1%的范圍之內(nèi),說(shuō)明結(jié)果是沒(méi)問(wèn)題的。反之在排除其他人為操縱故障等因素之后,說(shuō)明抽獎(jiǎng)程序可能存在bug

? ?注:

(1)想要結(jié)果更具有說(shuō)服力,可以更改設(shè)置的中獎(jiǎng)概率,再次模擬大量用戶抽獎(jiǎng),得出更多數(shù)據(jù)

(2) 后臺(tái)設(shè)定的單個(gè)獎(jiǎng)品的數(shù)量必須充足,不能出現(xiàn)數(shù)量為0的情況,否則數(shù)據(jù)會(huì)有很大偏差

?(3) 想要確保jmeter中多用戶并發(fā)結(jié)果出錯(cuò)率為0%,可以降低并發(fā)用戶總數(shù),延長(zhǎng)并發(fā)時(shí)間

二:獎(jiǎng)品數(shù)量有限,獎(jiǎng)品派發(fā)情況測(cè)試

? ? ? ?測(cè)試獎(jiǎng)品數(shù)量有限,獎(jiǎng)品派發(fā)情況時(shí),需要把獎(jiǎng)品設(shè)定成一個(gè)比較小的數(shù),抽獎(jiǎng)人數(shù)要大于獎(jiǎng)品數(shù)。比如設(shè)定某個(gè)獎(jiǎng)獎(jiǎng)品數(shù)量20個(gè),但是抽獎(jiǎng)人數(shù)有200個(gè),且這200人同時(shí)抽獎(jiǎng),查看中獎(jiǎng)情況。

? ? ? ?具體操作如下:

1.在后臺(tái)設(shè)置獎(jiǎng)品一數(shù)量為:20,其他獎(jiǎng)品數(shù)量不做限制。

2.使用jmeter模擬200個(gè)用戶抽獎(jiǎng)。

3.查看抽獎(jiǎng)結(jié)果。

? ? ? 若有超過(guò)20人獲得該獎(jiǎng)品,則程序存在bug。

? ? ? ?抽獎(jiǎng)是一個(gè)比較復(fù)雜的過(guò)程,以上只是針對(duì)抽獎(jiǎng)核心模塊做了簡(jiǎn)單介紹,在實(shí)際測(cè)試中,當(dāng)然還需要考慮到安全性和性能問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容