指定概率的一个算法

5个概率,分别返回值指定的一个数值,大家瞧瞧还有什么问题没。

private static Integer resizableProbabilityOf5(double p1, double p2, double p3, double p4, double p5) {
		if (p1 + p2 + p3 + p4 + p5 > 1) {
			throw new IllegalArgumentException("传入参数错误,概率之和不能大于1");
		}
		Random r = new Random();
		int n = r.nextInt(100000);
		int num = 0;
		int l1_resize = new Double((p1 < 0.00025 ? -(25 - p1 * 100000) : p1 * 100000 - 25)).intValue();
		int l2_resize = new Double((p2 < 0.00025 ? -(25 - p2 * 100000) : p2 * 100000 - 25)).intValue();
		int l3_resize = new Double((p3 < 0.00025 ? -(25 - p3 * 100000) : p3 * 100000 - 25)).intValue();
		int l4_resize = new Double((p4 < 0.00025 ? -(25 - p4 * 100000) : p4 * 100000 - 25)).intValue();
		int l5_resize = new Double((p5 < 0.00025 ? -(25 - p5 * 100000) : p5 * 100000 - 25)).intValue();
		if (n < 25 + l1_resize) {
			num = 5;
		} else if (n >= 25 + l1_resize && n < 50 + l1_resize + l2_resize) {
			num = 4;
		} else if (n >= 50 + l1_resize + l2_resize && n < 75 + l1_resize + l2_resize + l3_resize) {
			num = 3;
		} else if (n >= 75 + l1_resize + l2_resize + l3_resize && n < 100 + l1_resize + l2_resize + l3_resize + l4_resize) {
			num = 2;
		} else if (n >= 100 + l1_resize + l2_resize + l3_resize + l4_resize && n < 125 + l1_resize + l2_resize + l3_resize + l4_resize + l5_resize) {
			num = 1;
		}
		return num;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值