抽獎勝率演算法
『壹』 怎樣根據物品價值制定抽獎概率
抽獎概率-三種演算法一、逢「幾」中獎逢「幾」中獎,即通過預估抽獎人數和獎品數來判斷,「幾」=(抽獎人數/獎品數)*N。這是一種最簡單抽獎演算法,適合抽獎人數眾多,而且互相無聯系的情況。如今大為流行的微博轉發得獎就常常使用這種演算法,即根據轉發次數來決定獎品歸屬,透明而且具有激勵性。當然這個「幾」也不單只次數,還可能是時間,逢某個時間點就可以抽中,不過這種方案可能產生無人中獎和很多人中獎的情況,時間點的安排很關鍵!這個時間點一旦公布出去,那就是秒殺,霍霍。。逢「幾」中獎有很多弊端,但是非常簡單,很容易實現,被很多抽獎活動所採用,有些會公布抽獎規則,激勵抽獎,有些則不會公布,其實後台運行的可能也是這個演算法,簡單高效又不失公平。在信息不透明的情況下,鬼知道你是第幾個抽獎的,哈哈。。二、概率抽獎所謂概率抽獎是最容易想到的抽獎演算法了,這個概率可以是一成不變的,也可以是一直在變化調整的,最難的是採用多大的概率,何種情況下採用何種概率。這個也沒有什麼通用的方案,不同的應用場景,所用的概率演算法不同。下面介紹一種演算法,根據獎品的過期日期來計算它當前時間的中獎率,當時間逐漸接近獎品過期時間時,中獎概率會逐漸發生變化,如果設為1表示線性衰減,2為平方衰減,以此類推。
『貳』 有哪些經典的抽獎演算法
常見的有兩種
第一類是常見的有等級的抽獎活動,如一等、二等、三等獎等等
java">//分別為一、二、三、四等將的獎品數量,最後一個為未中獎的數量。
privatestaticfinalInteger[]lotteryList={5,10,20,40,100};
privateintgetSum(){
intsum=0;
for(intv:lotteryList){
sum+=v;
}
returnsum;
}
privateintgetLotteryLevel(){
Randomrandom=newRandom(System.nanoTime());
intsum=getSum();
for(inti=0;i<lotteryList.length;++i){
intrandNum=Math.abs(random.nextInt())%sum;
if(randNum<=lotteryList[i]){
returni;
}else{
sum-=lotteryList[i];
}
}
return-1;
}
第二類是不分等級的抽獎活動,僅需要參與人數與獎品總數,各獎品中獎概率相等。
//另一種抽獎演算法,用於公司抽獎,即總參與人數與獎品數固定。
=75;
privatestaticfinalinttotal=175;
privatestaticSet<Integer>lotterySet=newHashSet<Integer>();
static{
for(inti=1;i<=lotteryNum;++i){
lotterySet.add(total*i/lotteryNum);
}
}
privateintgetLotteryNum2(){
Randomrand=newRandom(System.nanoTime());
intrandNum=Math.abs(rand.nextInt())%total;
if(lotterySet.contains(randNum)){
returnrandNum*lotteryNum/total;
}
return-1;
}
『叄』 抽獎的概率怎麼計算
抽取一個紅球的概率為:[5/(5+50+150)]*100%=2.44%
抽取2個紅球的概率為:2.44%*{[4/(4+50+150)]*100%}=0.047824%
抽取3個紅球的概率為:0.047824%*{[3/(3+50+150)]*100%}=0.0007078%
抽取1個黃球的概率為:50/205*100%=24.39%
抽取2個黃球的概率為:24.39%*[49/204*100%]=5.5858%
抽取3個黃球的概率為:5.5858%*[48/203*100%]=1.385%
『肆』 中獎概率怎麼計算
這個問題在數學中就是
排列組合
中的組合演算法,組合:從n個不同元素中,任取m(m≤n)個元素並成一組,叫做從
n個不同元素中取出m個元素的一個組合.
從組合的
定義
知,如果兩個組合中的元素完全相同,不管元素的
順序
如何,都是相同的組合;只有當兩個組合中的元素不完全相同時,才是不同的組合.
組合計算公式為:註:公式中n!
表示n的階層,即:n!=n*(n-1)*(n-2)*.....*1
公式中m!表示m的階層,即:m!=m*(m-1)*(m-2)*...*1例如:n為9,m為5,那麼這個計算公式就是:C(m,n)=9*8*7*6*5*4*3*2*1/[5*4*3*2*1*(4*3*2*1)]所有遇到有關數學中的
組合問題
都可以用這個公式來計算所以像
雙色球玩法
的話,從33個
紅球
中選6個紅球的概率就為:C(33,6)=33!/[6!*(33-6)!]=1107568
他的概率就為:1/1107568另外雙色球中
藍球
是16選1,他的概率為:1/16那麼中雙色球一等獎的概率就為:C(33,6)
*C(16,1)
=
17,721,088
『伍』 抽獎獎品概率的演算法謝謝了,大神幫忙啊
可以預定義一個數,然後根據百分比計算各自的門檻值。如下: (注意:概率需要從小到大排列,因為用if判斷的問題。) #define BASE_NUMBER 32767 #define BASE_DIV 100 #define RATE1 1 #define RATE2 5 #define RATE3 20 #define RATE4 74 int var1, var2, var3, var4; main() { var1 = (int)((float)BASE_NUMBER*RATE1/BASE_DIV); var2 = (int)((float)BASE_NUMBER*RATE2/BASE_DIV); var3 = (int)((float)BASE_NUMBER*RATE3/BASE_DIV); var4 = (int)((float)BASE_NUMBER*RATE4/BASE_DIV); ..... if ( rand <= var1 ) { // 第一種 } else if ( rand <= var2 ) { // 第二種 } else if ( rand <= var3 ) { // 第三種 } else { // 第四種 } ... } 如上,只需要改變BASE_DIV 和RATE1 2 3 4就能控制
求採納
『陸』 抽獎活動的中獎幾率是怎麼算的
中獎的概率就是用獎品的數量除以參與抽獎的總人數,得到的結果就是抽到該獎品的中獎概率。如果參與抽獎人數有800個人,獎品有5件,那麼中獎的概率就是:5/800=0.625%。
在國內彩市中頭獎概率最低的是大樂透玩法,概率僅為2142萬分之一。其次是雙色球的頭獎中出概率,為1772萬分之一。
而美國最熱門的兩大彩種之一,兆彩(超級百萬)的中頭獎概率為1.75億分之一,堪稱史上難度最大的彩票玩法,也就是說,美國兆彩中頭獎的概率僅為雙色球的1/9.86。
概率,亦稱「或然率」,它是反映隨機事件出現的可能性大小。隨機事件是指在相同條件下,可能出現也可能不出現的事件。
例如,從一批有正品和次品的商品中,隨意抽取一件,「抽得的是正品」就是一個隨機事件。設對某一隨機現象進行了n次試驗與觀察,其中A事件出現了m次,即其出現的頻率為m/n。
經過大量反復試驗,常有m/n越來越接近於某個確定的常數(此論斷證明詳見伯努利大數定律)。該常數即為事件A出現的概率,常用P
(A) 表示。
『柒』 抽獎概率計算
是的,兩人同時中特等獎的概率是百分之一!!這樣想:第一人抽獎有10種可能,當第一個人抽到第一個球時,第二個人可能是第一個,也可能是第二個,有10種可能;當第一個人抽到第二個球時,第二個人仍然有10種可能,如此,總共有100種組合情況,而同時抽到第一個的情況只有一種,所以同時抽到特等獎的概率是百分之一!
這種題目,關鍵在於首先要找出所有的可能,然後再看符合要求的有幾種可能
『捌』 公司年會抽獎概率計算
像你所說的這種操作,如面對人群是1到600這600個人【編號000-599】,每個人的概率是相等的。
現在你單位是500多人,不滿600的話不公平。
假設總人數550,某人編號167
當個位抽到7、十位抽到6時,按理,他有1/5 的機會得獎【012345中抽一個】。
但現在因為總人數限制,百位抽到5時【567】,必須放棄,顯然對他不公平。
而對127,顯然沒有這樣的影響。
因此,在這種抽獎情況下,不用管百位為何,拿十位個位這兩位數 小於 公司總人數後兩位的號段,中獎概率大一點。
公司最好用電腦抽獎,實現很方便。
如果一定採用抽乒乓球的辦法,因人數不足,要保證絕對公平,只能准備跟人數一樣多的乒乓球,每人對應一球。
近似絕對公平的辦法,按照公式:
抽到號 × 公司人數 ÷ 600 + 1計算 【人員的抽獎編號從1開始】。
假設公司550人,抽出的三位數123,
123× 550 / 600 + 1 = 113.75 ≈ 114 號中獎。