搶紅包-二倍均值算法

剩下M元,N個人 ,每次搶到的金額 = 隨機區間 (0, M / N *2) 

package com.redpackage;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import com.zuochengyun.book.chaptertwo.list.MyListUtils;

/**
 * 搶紅包的二倍均值法    當前錢數/當前人數*2
 * @author caizongyu
 *
 */
public class DoubleAvgMethod {
	/**
	 * 
	 * @param num 人數
	 * @param money 錢數
	 * @return
	 */
	private static List<Integer> doRedPackage(int num, int money){
		List<Integer> result = new ArrayList<>();
		if(num <1 && money <0) {
			return null;
		}
		int currentNum = num;
		int currentMoney = money;
		int currentRedPackage=-1;
		Random random = new Random();
		while(currentNum > 1) {
			currentRedPackage = random.nextInt(currentMoney/currentNum*2+1);
			--currentNum;
			currentMoney =currentMoney-currentRedPackage;
			result.add(currentRedPackage);
		}
		result.add(currentMoney);
		return result;
	}
	public static void main(String[] args) {
		System.out.println(doRedPackage(5, 10).toString());
		
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章