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

最近在作移動端的營銷活動,其中包含刮刮卡、大轉盤等小遊戲,對於用戶來講他們不關心Code只關心我是否中獎了,以前也在羣裏看到有人要機率的「算法」或者說是計算工具類。html

ps:這裏不得不提一下,每當本身在作什麼東西的時候總會在一些地方發現類似的需求或者文章,來源有不少好比:cnblogs、QQ羣等各類渠道,這不剛剛還有人發表隨機數相關的文章,哈哈多是我運氣好。算法

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

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

下面咱們來看機率服務接口:工具

IProbabilityService

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

 

爲何須要「getRandomNumber」參數,而不直接在內部使用Random?

這邊就須要引入「隨機數是騙人的,.Net、Java、C爲我做證」今天的熱乎文章了,內部使用Random有不少的不肯定性,並且不易於擴展因此這邊提供了一個委託提供隨機數,而機率服務自己只專一於計算,若是非要高大上點就引入設計原則——單一職責測試

服務實現

ProbabilityService

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

 

有運行Demo嗎?

固然,這是個人一向做風熱烈的笑臉spa

運行結果

image

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

Code

Program

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

 

寫在最後

已經寫了一些「散文」作爲鍛鍊,以後準備寫一個系列挑戰一下,不過最近在作項目,等手上的模塊作完以後,開始着手針對 Orchard Framework 寫一個刨析系列,固然中間可能會穿插一些小文章,喜歡Orchard的朋友們能夠留個言留個腳印。

相關文章
相關標籤/搜索