概率計算(抽獎活動、命中率)


最近在做移動端的營銷活動,其中包含刮刮卡、大轉盤等小游戲,對於用戶來說他們不關心Code只關心我是否中獎了,之前也在群里看到有人要概率的“算法”或者說是計算工具類。

ps:這里不得不提一下,每當自己在做什么東西的時候總會在一些地方發現相似的需求或者文章,來源有很多比如:cnblogs、QQ群等各種渠道,這不剛剛還有人發表隨機數相關的文章,哈哈可能是我運氣好。

營銷活動核心——我是不是中獎了呢?

是不是中獎都有一個概率和巧合性那么肯定少不了隨機數了,說到隨機數各位Coder們肯定想到了Random這個類,是的這一次的概率計算的實現也是基於隨機數的。

下面我們來看概率服務接口:

IProbabilityService

接口十分的簡單一起有兩個方法,第一個方法比較純粹的計算概率,而第二個則添加了一些修正概率所需的數據。

 

為什么需要“getRandomNumber”參數,而不直接在內部使用Random?

這邊就需要引入“隨機數是騙人的,.Net、Java、C為我作證”今天的熱乎文章了,內部使用Random有很多的不確定性,而且不易於擴展所以這邊提供了一個委托提供隨機數,而概率服務本身只專注於計算,如果非要高大上點就引入設計原則——單一職責

服務實現

ProbabilityService

代碼有較詳盡的注釋這邊不再說明了。

 

有運行Demo嗎?

當然,這是我的一貫作風熱烈的笑臉

運行結果

image

第一行為接口的第一個方法(純粹的概率計算),第二個行為接口的第二個方法(帶簡單修正)。

Code

Program

Demo下載:http://pan.baidu.com/s/1gdmnH31

 

寫在最后

已經寫了一些“散文”做為鍛煉,之后准備寫一個系列挑戰一下,不過最近在做項目,等手上的模塊做完之后,開始着手針對 Orchard Framework 寫一個刨析系列,當然中間可能會穿插一些小文章,喜歡Orchard的朋友們可以留個言留個腳印。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM