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

KAnts發表於2014-05-12

最近在做移動端的營銷活動,其中包含刮刮卡、大轉盤等小遊戲,對於使用者來說他們不關心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的朋友們可以留個言留個腳印。

相關文章