1. 程式人生 > >JAVA大轉盤抽獎演算法

JAVA大轉盤抽獎演算法

獎品的概率根據權重計算(當前權重/總權重)

程式碼如下

int totalWeight = 1000;//計算出來的總權重
int random = (int)(Math.random() * totalWeight + 1);//隨機數
		int stepTotal = 0;
		
		Collections.sort(probaList);//升序
		
		//probability ->key 是獎品id ->prod是獎品權重
		for(Probability probability : probaList)
		{
			int proba = probability.prob;
			int step = stepTotal + proba;
			
                        //將隨機數放進不同的桶
			if(random>stepTotal && random<=step)
			{
				return probability.key;
			}
			
			stepTotal += step;
		}
		
		return 0;
根據總權重分出來不同的桶,比如獎品列表裡有3個獎品,權重分別為 20 30 50,那麼就可以分為3個桶。
第一個桶:【1-20】
第二個桶:【21-50】
第三個桶:【51-100】
從1-100裡隨機出來一個數,根據這個數字進入不同的桶來判斷中的是什麼獎品。
概率解釋:
	以第一個桶為例,從100個數裡隨機出來1個數,這個數在1-20之間的概率就是20%