`

摇塞子概率 1-6出现概率可配置

 
阅读更多
/**
 *  
 * JAVA 返回随机数,并根据概率、比率
 * <p/>
 * 
 * @author <a href="mailto:durb@etuo.cn">durb</a>
 * @version  Date: 2015年4月15日 下午3:22:22
 * @serial 1.0
 * @since 2015年4月15日 下午3:22:22
 */
public class MathRandom {
	/**
	 * 1出现的概率为%50
	 */
	public static double rate1 = 0.50;
	/**
	 * 2出现的概率为%20
	 */
	public static double rate2 = 0.20;
	/**
	 * 3出现的概率为%15
	 */
	public static double rate3 = 0.15;
	/**
	 * 4出现的概率为%10
	 */
	public static double rate4 = 0.10;
	/**
	 * 5出现的概率为%4
	 */
	public static double rate5 = 0.04;
	/**
	 * 6出现的概率为%1
	 */
	public static double rate6 = 0.01;

	/**
	 * Math.random()产生一个double型的随机数,判断一下 例如0出现的概率为%50,则介于0到0.50中间的返回0
	 * 
	 * @return int
	 * 
	 */
	private int PercentageRandom() {
		double randomNumber;
		randomNumber = Math.random();
		if (randomNumber >= 0 && randomNumber <= rate1) {
			return 1;
		} else if (randomNumber >= rate1
				&& randomNumber <= rate1 + rate2) {
			return 2;
		} else if (randomNumber >= rate1 + rate2
				&& randomNumber <= rate1 + rate2 + rate3) {
			return 3;
		} else if (randomNumber >= rate1 + rate2 + rate3
				&& randomNumber <= rate1 + rate2 + rate3 + rate4) {
			return 4;
		} else if (randomNumber >= rate1 + rate2 + rate3 + rate4
				&& randomNumber <= rate1 + rate2 + rate3 + rate4 + rate5) {
			return 5;
		} else if (randomNumber >= rate1 + rate2 + rate3 + rate4 + rate5
				&& randomNumber <= rate1 + rate2 + rate3 + rate4 + rate5 + rate6) {
			return 6;
		}
		return -1;
	}

	/**
	 * 测试主程序
	 * 
	 * @param agrs
	 */
	public static void main(String[] agrs) {
		int i = 0;
		MathRandom a = new MathRandom();
		for (i = 0; i <= 100; i++)// 打印100个测试概率的准确性
		{
			System.out.println(a.PercentageRandom());
		}
	}
}

 

JS 算法概率

 

function prizeRand(oArr) {
    var sum = 0;    // 总和
    var rand = 0;   // 每次循环产生的随机数
    var result = 0; // 返回的对象的key

    console.log(oArr);

    // 计算总和
    for (var i in oArr) {
        sum += oArr[i][0];
    }

    // 思路就是如果设置的数落在随机数内,则返回,否则减去本次的数
    for (var i in oArr) {
        rand = Math.floor(Math.random()*sum + 1);
        if (oArr[i][0] >= rand) {
            result = oArr[i][0];
            break;
        } else {
            sum -= oArr[i][0];
        }
    }

    return result;

}

var oArr = {'5':[5, 'Mac'], '3':[15, 'iPhone'], '2':[30, 'iPad'], '1':[50, 'iWatch']};

console.log(prizeRand(oArr));

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics