網上找的抽獎代碼都不滿意,自己動手豐衣足食,有需要的可以直接拿去用,不收版權費的。 ...
很早以前看到了這個算法,忘記叫什么名字了,這里就索性叫抽獎算法吧,知道的朋友不要扔磚頭 一般抽獎的時候都分為 等獎, 等獎出現的概率最小, 等獎出現概率最大。 分為以下幾步: 用一個變量標識下各個獎的登記,這個好像是叫做 權重 吧,一等獎記為 ,二等獎。。。。五等獎記為 。 求得權重總和,記為n 每個獎項都產生一個隨機數,隨機數介於權重和權重和n之間,記為m 求的各個權重 m的和,然后從大到小排序 ...
2012-11-12 09:20 4 3407 推薦指數:
網上找的抽獎代碼都不滿意,自己動手豐衣足食,有需要的可以直接拿去用,不收版權費的。 ...
抽獎算法理論 在一組獎品中,每個獎品有自己的概率,總概率為 1.0,也就是說在庫存充足的情況下,必然能抽中其中的一個。 通過「謝謝參與」來作為無獎的獎品(也是一種獎品)。 需要注意的是:如果一組中所有的獎品,總概率之和不為 1.0,那么數值代表的概率就不是真實概率了,需要用所占比例來作為新 ...
假設有一個數組[100,400,200,300],它的意思是,總數是100+400+200+300=1000. 取到第一個數的概率是100/1000,取到第二個數的概率是400/1000......代碼如下: 下面來解釋一下這個算法,把數組抽象出來,假設為a,b,c,d,這四個概率 ...
不同概率的抽獎原理就是把0到*(比重總數)的區間分塊 分塊的依據是物品占整個的比重,再根據隨機數種子來產生1-* 中的某個數 判斷這個數是落在哪個區間上,區間對應的就是抽到的那個物品。 隨機數理論上是概率均等的,那么相應的區間所含數的多少就體現了抽獎物品概率的不同 ...
算法實現 ...
博客園參考文章 github參考源碼 ...
摘自網絡 ...
場景: 生成10個隨機紅包, 獎池總金額10000, 最小500, 最大1000,獎池全部分配完。 分析: 第一想法簡單, 直接生成500-1000之間的隨機數,直接生成10個, 直接上代碼。這種寫法的問題在於最后一個金額生成的時候會出現問題,會有出現超過最大金額的可能性 ...