關(guān)于抽獎概率的測試

? ? ? ?一般的抽獎管理功能被盈,基本是在一個獎池中放一堆獎品貌夕,分別給它們設(shè)置不同的數(shù)量和概率炸枣,在獎品沒有發(fā)完的情況下虏等,概率高的被抽中的幾率就大,反之則低适肠,獎品被抽完后就不能再被抽中霍衫,另外,概率為0的不能被抽中侯养,概率為100則一定要被抽中敦跌。

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

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

? ? ? ?第二種:概率抽獎。所謂概率抽獎是最容易想到的抽獎算法了昌渤,這個概率可以是一成不變的赴穗,也可以是一直在變化調(diào)整的,最難的是采用多大的概率膀息,何種情況下采用何種概率般眉。例如:把設(shè)定的中獎概率從小到大排序(0.1、0.15履婉、0.25煤篙、0.5)斟览,劃分區(qū)間([0毁腿,0.1]、(0.1苛茂,0.15]已烤、(0.15,0.25]妓羊、(0.25胯究,0.5]),每次抽獎時代碼自動生成一個隨機(jī)數(shù)躁绸,當(dāng)隨機(jī)數(shù)在某個區(qū)間時裕循,就抽中某個獎品。此種算法實時性強(qiáng)净刮,但計算機(jī)產(chǎn)生的隨機(jī)數(shù)是一個偽隨機(jī)數(shù)剥哑,這就意味著,隨機(jī)數(shù)可能會連續(xù)相同淹父,即同一個用戶可能會連續(xù)抽中某個獎品株婴。

? ? ? ? 第三種:依賴不可控的物理隨機(jī)數(shù)。利用各種不可控的數(shù)據(jù)暑认,根據(jù)算法困介,得到一組數(shù)字大审,通過某種規(guī)則,來得出中獎則的號碼座哩,比如體育彩票徒扶、大樂透之類的,不可控的數(shù)據(jù)可能是上證指數(shù)......此種算法絕對公平根穷、絕對透明酷愧,在現(xiàn)如今也比較流行,但是這種算法的唯一的缺點是無法實時抽獎缠诅。

? ? ? ?以下主要介紹通過第二種抽獎概率算法實現(xiàn)的抽獎程序核心部分的測試:中獎概率的校對溶浴;獎品不足,用戶并發(fā)抽獎的情況管引。

一:程序中獎概率的準(zhǔn)確性校對

? ? ? ?概率的準(zhǔn)確性校對士败,需要在獎品數(shù)量無限充足的情況下測試。思路如下:先設(shè)定抽獎概率褥伴,模擬大量抽獎數(shù)據(jù)谅将,算出真實的抽獎概率,再來比對設(shè)定的和真實的抽獎概率之間的差距了重慢,如果不超過 正負(fù)1%饥臂,那么程序概率是正確的。具體操作方法如下:

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

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

a.獲取用戶登陸信息

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

? b.用戶抽獎

設(shè)定并發(fā)抽獎的用戶數(shù)量,訪問抽獎接口 http://XX/game-mobile/intf/h5//turnTable/luckDraw?tableId=&ignoreCsrfToken=true并監(jiān)控多用戶并發(fā)狀態(tài)下核芽,確保抽獎錯誤率為0%

3.在mogodb中查詢當(dāng)天抽獎總次數(shù)囚戚,單個獎品被抽中的次數(shù),計算實際中獎概率

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.計算實際中獎概率

實際中獎概率=中獎次數(shù)/抽獎總次數(shù)

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

并計算出單個獎品中獎的期望值和偏差值驰坊。

4.小結(jié)

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

注:

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

(2) 后臺設(shè)定的單個獎品的數(shù)量必須充足恶导,不能出現(xiàn)數(shù)量為0的情況浆竭,否則數(shù)據(jù)會有很大偏差

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

二:獎品數(shù)量有限邦泄,獎品派發(fā)情況測試

測試獎品數(shù)量有限删窒,獎品派發(fā)情況時,需要把獎品設(shè)定成一個比較小的數(shù)顺囊,抽獎人數(shù)要大于獎品數(shù)肌索。比如設(shè)定某個獎獎品數(shù)量20個,但是抽獎人數(shù)有200個特碳,且這200人同時抽獎诚亚,查看中獎情況。

具體操作如下:

1.在后臺設(shè)置獎品一數(shù)量為:20午乓,其他獎品數(shù)量不做限制站宗。

2.使用jmeter模擬200個用戶抽獎。

3.查看抽獎結(jié)果益愈。

若有超過20人獲得該獎品梢灭,則程序存在bug。

抽獎是一個比較復(fù)雜的過程蒸其,以上只是針對抽獎核心模塊做了簡單介紹敏释,在實際測試中,當(dāng)然還需要考慮到安全性和性能問題摸袁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钥顽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子靠汁,更是在濱河造成了極大的恐慌蜂大,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膀曾,死亡現(xiàn)場離奇詭異县爬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)添谊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來察迟,“玉大人斩狱,你說我怎么就攤上這事≡浚” “怎么了所踊?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長概荷。 經(jīng)常有香客問我秕岛,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任继薛,我火速辦了婚禮修壕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遏考。我一直安慰自己慈鸠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布灌具。 她就那樣靜靜地躺著青团,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咖楣。 梳的紋絲不亂的頭發(fā)上督笆,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機(jī)與錄音诱贿,去河邊找鬼胖腾。 笑死,一個胖子當(dāng)著我的面吹牛瘪松,可吹牛的內(nèi)容都是我干的咸作。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼宵睦,長吁一口氣:“原來是場噩夢啊……” “哼记罚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起壳嚎,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤桐智,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烟馅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體说庭,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年郑趁,在試婚紗的時候發(fā)現(xiàn)自己被綠了刊驴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡寡润,死狀恐怖捆憎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梭纹,我是刑警寧澤躲惰,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站变抽,受9級特大地震影響础拨,放射性物質(zhì)發(fā)生泄漏氮块。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一诡宗、第九天 我趴在偏房一處隱蔽的房頂上張望滔蝉。 院中可真熱鬧,春花似錦僚焦、人聲如沸锰提。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽立肘。三九已至,卻和暖如春名扛,著一層夾襖步出監(jiān)牢的瞬間谅年,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工肮韧, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留融蹂,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓弄企,卻偏偏與公主長得像超燃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拘领,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一般的抽獎管理功能意乓,基本是在一個獎池中放一堆獎品,分別給它們設(shè)置不同的數(shù)量和概率约素,在獎品沒有發(fā)完的情況下届良,...
    wwking閱讀 10,163評論 3 16
  • 抽獎程序設(shè)定的算法:把設(shè)定的中獎概率從小到大排序(0.1、0.15圣猎、0.25士葫、0.5),劃分區(qū)間([0送悔,0...
    wwking閱讀 23,073評論 3 17
  • 前段時間公司里為了推廣微信公眾號吸粉慢显,需要在公眾號菜單里增加一個大轉(zhuǎn)盤抽獎的活動,在活動現(xiàn)場手機(jī)上抽到什么獎品就是...
    IT小C閱讀 18,926評論 1 8
  • 最近的一個業(yè)務(wù)需求是開發(fā)一個抽獎管理功能放祟,要求在一個獎池中放一堆獎品鳍怨,分別給它們設(shè)置不同的數(shù)量和概率,在獎品沒有發(fā)...
    codemarker閱讀 23,022評論 2 12
  • 有些事声滥,我們承擔(dān)不起后果 話題源于同事裝修新房眉撵。他們結(jié)婚時買的新房侦香,由于種種原因過了好久才下來,孩子都快一歲了纽疟。同...
    圣誕快樂閱讀 1,057評論 0 2