`

java计算概率

    博客分类:
  • java
 
阅读更多

rates 为中奖概率值   比如:0.3,0.5,0.2

package com.ddb.activity.base.util;

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

public class LotteryProbabilityUtil {
	
	public static void main(String[] args) {
		List<BigDecimal> rates=new ArrayList<BigDecimal>();
		rates.add(new BigDecimal("0.01"));
		rates.add(new BigDecimal("0.2"));
		//rates.add(new BigDecimal("0.3"));
		//rates.add(new BigDecimal("0.2"));
		rates.add(new BigDecimal("0.2"));
		rates.add(new BigDecimal("0.09"));
//		int j=0;
		for(int i=0;i<10;i++){
			int a=LotteryProbabilityUtil.getRandomIndex(rates);
			System.out.println(a);
			if(a==0){
//				System.out.println(++j);
			}
//			
		}
	}
	/**
	 * 计算概率
	 * @param rates
	 * @return 抽中的位置
	 */
	public static int getRandomIndex(List<BigDecimal> rates) {
		Random random = new Random();
		BigDecimal ranNum = new BigDecimal(random.nextDouble());
		BigDecimal sumRate = new BigDecimal("0.0");
		for(BigDecimal rate:rates) {
			sumRate = sumRate.add(rate);
		}
		BigDecimal minVal = new BigDecimal("0.0");
		BigDecimal maxVal = new BigDecimal("0.0");
		for (int i = 0; i < rates.size(); i++) {
			BigDecimal rangeVal = rates.get(i).divide(sumRate, BigDecimal.ROUND_HALF_EVEN);
			maxVal = minVal.add(rangeVal);
			boolean exp1 = false;
			if(i == 0) {
				exp1 = (minVal.compareTo(ranNum)<=0);
			} else {
				exp1 = (minVal.compareTo(ranNum)<0);
			}
			if(exp1&&(ranNum.compareTo(maxVal)<=0)) {
				return i;
			}
			minVal = minVal.add(rangeVal);
		}
		throw new RuntimeException("Get Random Index Error");
	}
}
分享到:
评论

相关推荐

    Java双色球概率问题.rar

    然后,它可能会统计并输出特定号码组合出现的次数,以此来近似计算概率。 为了实现这个功能,开发者可能使用了以下Java技术: 1. 循环:如for或while循环用于遍历所有可能的红球组合。 2. 数组或ArrayList:存储红...

    java概率抽奖+数量配置dome.zip

    "采取分子不变,分母减少的逆向思维动态计算概率"是一种巧妙的设计。通常情况下,概率是固定的,如1/100,但这个系统在奖品数量减少时会动态调整概率。这意味着即使奖品数量减少,中奖者得到的相对机会(即概率的...

    java根据比例概率生成随机数

    Java 根据比例概率生成随机数 概率随机数是指根据事先设定的概率分布生成随机数的方法。在 Java 中,可以使用 Math.random() 方法生成随机数,然后根据概率分布判断返回的数字。 在给定的代码中,作者定义了一个 ...

    JAVA数学计算包

    9. **概率分布**:实现了多种连续和离散概率分布,如伽马分布、贝塔分布、二项分布等,便于进行概率计算。 10. **统计检验**:包括卡方检验、F检验等,用于评估模型假设的有效性。 Apache Commons Math3库的源代码...

    JAVA 抽奖算法,JAVA 抽奖算法·

    该JAVA抽奖算法通过合理的概率缩放、累积概率计算以及随机数生成与比较等步骤,实现了基于不同概率分布的灵活抽奖功能。对于实际应用场景来说,这种算法不仅简单高效,而且易于扩展,能够满足多种不同的需求。

    java实现刮刮卡大转盘等中奖概率的简单实例

    以上就是使用Java实现刮刮卡和大转盘等中奖概率的基本思路和步骤。在实际项目中,还需要考虑用户体验、性能优化、安全性等方面,以提供稳定、可靠的抽奖系统。在提供的压缩包`test`中,可能包含示例代码或资源文件,...

    JAVA计算七星彩的概率

    七星彩要求首先输入7个数字,然后电脑随机产生7个数字,然后逐一比较各位上的数字,记录下有几位数字相同。一等奖各位数字全部相同,二等奖连续有6位数字相同,以此类推。

    java数值计算算法编程

    在Java中,数值计算涵盖了广泛的算法和技术,包括基本的算术运算、复杂数学函数、线性代数、微积分、概率统计等。本主题将深入探讨这些知识点,帮助开发者掌握在Java环境中进行复杂计算的方法。 1. **基本数据类型...

    Java数值计算算法编程

    Java的`Random`类可生成伪随机数,配合Apache Commons Math等库,可以生成符合特定概率分布(如正态分布、泊松分布)的随机数,这对于模拟实验和统计分析非常有用。 十、并行计算与GPU加速 Java的并发API(如`...

    017_标准正态分布概率计算1

    标准正态分布的概率计算涉及到分布函数(cumulative distribution function, CDF),它表示的是X小于或等于某个值x的概率。对于标准正态分布,分布函数可以表示为: \[ \Phi(x) = \frac{1}{\sqrt{2\pi}} \int_{-\...

    吉林大学服务计算概率期末作业答案.zip

    【服务计算概率】是计算机科学领域的一个重要分支,它结合了概率论与计算理论,主要研究如何在不确定性和随机性环境中设计和分析计算系统。在吉林大学的这门课程中,学生们被要求处理与服务计算概率相关的期末作业,...

    应力的计算 java版本的程序

    【应力的计算 Java 版本程序】 在电力工程和结构力学中,应力的计算是至关重要的,它涉及到电力线路的设计和安全评估。这个Java程序旨在计算特定条件下的应力分布,特别是考虑了弧垂、档距、档距变化量以及线路参数...

    JAVA 根据设置的概率生成随机数的方法

    JAVA 根据设置的概率生成随机数的方法 JAVA 根据设置的概率生成随机数的方法是指根据预先设置的概率来生成随机数的技术。这种方法广泛应用于游戏、模拟、科学计算、数据分析等领域,在实际应用中可以模拟真实世界中...

    java毕业设计之彩票概率计算app源码.zip

    这是一个基于Java的毕业...对Java 8、Maven、MySQL以及基本的软件工程流程的理解,将有助于开发者成功运行和理解这个彩票概率计算APP的源码。同时,这也是一个很好的机会,通过实际项目来提升问题解决和项目管理能力。

    哈希计算工具 java-hash.7z

    哈希计算工具 `java-hash.7z` 是一个专门用于进行哈希运算的软件包,主要服务于编程领域,特别是Java开发者。哈希计算在信息技术中扮演着至关重要的角色,它能够将任意大小的数据映射为固定长度的哈希值,这个值通常...

    使用JAVA实现Entropy(信息熵)计算代码

    5. **优化与效率**:在处理大数据时,为提高效率,可以使用哈希映射(HashMap)来存储每个二进制位的计数,然后根据总计数计算概率。这样可以避免重复遍历数据,减少计算时间。 6. **使用示例**:在`...

    EM算法求高斯混合分布java代码

    1. E步:计算每个数据点属于各个高斯分布的概率,即后验概率。对于数据点x_i,其属于第k个高斯分布的概率p(z_i=k|x_i; θ^(t)),其中θ^(t)表示当前迭代的参数。 2. M步:基于E步得到的后验概率,更新高斯分布的...

    java分析文本中字符出现的概率

    5. **计算概率**:遍历完所有字符后,获取总字符数,然后用每个字符的出现次数除以总字符数,得到该字符的概率。 ```java int totalChars = charCountMap.values().stream().mapToInt(Integer::intValue).sum(); ...

    java代码 干旱SPI逐日计算,基于mysql数据库

    在实际项目中,`GetSPIHis.java`可能包含多个方法,如`connectToDB()`(建立数据库连接)、`getPrecipitationData()`(获取降水数据)、`calculateRanks()`(计算秩)、`applyDistribution()`(应用概率分布函数)、...

Global site tag (gtag.js) - Google Analytics