`
szsuyuji
  • 浏览: 981 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

指定概率的一个算法

阅读更多

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;
	}

 

分享到:
评论

相关推荐

    C#概率算法

    首先,大转盘抽奖是一种常见的互动方式,它通过一个带有多个区域的圆盘来表示不同的奖项。每个区域的大小对应着中奖的概率。在C#中,可以使用`Random`类生成随机数,并结合特定的逻辑来确定指针停在哪个区域。例如,...

    常见的抽奖-根据指定概率抽奖(简单的)

    "常见的抽奖-根据指定概率抽奖(简单的)"这个主题涉及到的核心技术是如何设计一个公平且能按照预设概率进行抽选的算法。这里我们将深入探讨如何实现这样一个系统。 首先,我们需要理解“指定概率”的含义。在抽奖...

    算法与数据结构设计 指定类型数据随机生成算法

    例如,如果我们需要生成整数,可以设定一个分布,如uniform_int_distribution(min, max),其中min和max分别是生成范围的下限和上限。如果需要生成浮点数或自定义数据结构,我们可以通过调整分布函数和生成器来实现。...

    matlab的典型算法(包括神经网络、遗传算法、概率算法、模拟退火算法)

    在MATLAB中,有许多内置的工具箱支持各种高级算法的实现,包括神经网络、遗传算法、概率算法和模拟退火算法。下面将详细讲解这些算法及其在MATLAB中的应用。 1. **神经网络** 神经网络是受生物神经元结构启发的...

    卷积码的MAP算法-最大后验概率算法

    在该编码过程中,原始信息序列会经过一个具有记忆功能的编码器,生成冗余的码字序列。在MATLAB中实现卷积编码主要涉及到以下步骤: 1. **生成随机比特流**:使用`randint`函数生成随机的二进制序列。 2. **定义编码...

    常见的抽奖-根据指定概率抽奖(改进)

    总的来说,构建一个根据指定概率抽奖的系统需要理解随机数生成、概率计算以及WPF的事件处理和数据绑定机制。通过巧妙地设计和实现,可以创建一个既公正又吸引人的抽奖程序。在实际项目中,还可以考虑性能优化、并发...

    ACOsecond.rar_ACOsecond_bandrb9_固定起点固定终点ACO代码_蚁群算法_蚁群算法终点

    标题中的“ACOsecond.rar_ACOsecond_bandrb9_固定起点固定终点ACO代码_蚁群算法_蚁群算法终点”表明这是一个关于蚁群算法(Ant Colony Optimization, ACO)的程序代码,其中包含了特定的优化问题解决方案,即固定...

    抽奖算法最新

    抽奖算法在IT行业中是一个重要的应用领域,特别是在营销活动、游戏设计和数据分析等方面。抽奖算法的设计目的是确保结果公平、随机,并且能够满足特定的业务需求。本文将深入探讨抽奖算法的原理、常见类型以及如何...

    密码学实验三之:Miller-Rabin算法和Mont算法的C++实现

    这是一个概率性素数测试,能够有效地判断一个大整数是否为素数。在RSA中,选择合适的素数是基础,因为公钥和私钥的生成依赖于一对大素数。传统的素数测试方法(如埃拉托斯特尼筛法)在处理大数时效率低下,而Miller-...

    MCMC和EM算法.pdf

    MCMC 算法是一种 Monte Carlo 方法,用于近似计算复杂的积分和概率分布,广泛应用于机器学习、数据挖掘、统计学等领域。EM 算法是一种最大似然估计的方法,用于求解含有隐变量的概率模型的参数。 MCMC 算法的基本...

    多元函数遗传算法

    在这个特定的案例中,我们有一个用C#编程语言实现的示例,该示例针对一个具有三个未知数的三元函数进行优化,目标是找到函数在指定取值范围内的最大值。遗传算法的优势在于它能处理非线性、非凸性和多模态的问题,...

    维特比算法

    在初始化阶段,算法会计算出第一个观测值对应各种状态的概率,并记录下最佳路径。在递归阶段,算法会逐个处理后续的观测值,计算在每个观测时刻下,各个状态概率的最大值,并记录下状态转移过程。最后,在路径回溯...

    一个关于遗传算法的C++程序

    遗传算法(Genetic Algorithm,GA)是一种模拟自然选择和遗传机制的优化搜索算法,用于解决搜索和优化问题。它通过随机选择、交叉(或称为配对)、变异等操作来迭代地改善解决方案的质量。遗传算法适用于复杂、非...

    利用GMM算法实现指定的音色间转换

    高斯混合模型是一种概率模型,由多个高斯分布组合而成。在音色转换中,GMM用于建模语音的声学特征,如MFCC(梅尔频率倒谱系数)。MFCC是一种常用的语音特征提取方法,它可以有效地捕获语音信号的频谱特性。 以下是...

    统计计算-EM算法(R语言)

    EM函数内部,我们初始化一个空向量`theta`来存储每次迭代的θ值,并设定一个迭代停止条件,即当连续两次迭代的θ值变化小于指定的阈值`ep`时,停止迭代。通过`repeat`循环实现EM算法的迭代过程,每一步都根据E步和M...

Global site tag (gtag.js) - Google Analytics