`

摇塞子概率 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));

  

分享到:
评论

相关推荐

    Dice Simulator:骰子概率模拟器-开源

    小型模拟器,用于检查典型骰子概率的棋盘游戏/ wargaming(例如在Vassal pbem游戏期间)。 为GMT Games的棋盘游戏“ Here I Stand”预先配置的标签,但也可轻松用于其他棋盘游戏。 该程序不使用数学方法,而是运行...

    掷骰子:小Vue 3掷骰子应用程序

    这表明我们将讨论一个简单的应用,其功能是模拟掷骰子的过程,可能是为了游戏或概率学习的目的。Vue 3的使用意味着开发者利用了Vue的新特性和性能提升来创建这个交互式的组件。 在项目设置部分,`npm install`命令...

    云南省峨山彝族自治县 高二数学上学期寒假作业8 理 试题.doc

    这里涉及到分类计数和组合概率的计算,首先确定满足条件的配置情况,然后计算这些配置出现的概率。 10. **二项分布的期望与概率计算** - 题目10是关于食品企业被投诉次数的二项分布,要求求出a的值和X的期望,以及...

    DiceRoller:这个在网页上掷骰子

    6. 其他辅助文件:如许可证文件、配置文件等。 深入研究DiceRoller的源代码可以帮助我们理解如何将JavaScript和其他Web技术结合,创建动态、交互式的Web应用。对于学习和提升JavaScript编程技能,这是一个很好的...

    6400红色 概率统计与风险投资决策l2.28.5.zip

    概率统计与风险投资决策是金融领域中的核心课程,它结合了概率论的理论与实际投资中的决策分析。在这个课程中,我们主要会探讨以下几个关键知识点: 1. **概率论基础**:概率论是理解随机事件行为的基础。它包括...

    概率论与数理统计89PPT学习教案.pptx

    其概率分布为P(X=k) = (1-p)^{k-1}p,k=1,2,...。 二项分布是另一种重要的离散型随机变量分布,它源于n重伯努利试验。在这种试验中,每次试验有两种可能的结果,如“成功”或“失败”,且每次试验的成功概率p独立且...

    Chung Kailai_Elementary Probability Theory.pdf

    - **概念**:资产配置、风险评估等基础知识。 - **应用**:金融市场的投资决策制定。 #### 9.2 资产回报与风险 - **定义**:投资回报率及不确定性的度量。 - **风险测量**:方差、标准差等指标。 #### 9.3 组合...

    java代码-骰子

    这段代码首先创建了一个`Random`对象,然后使用`nextInt(6)`生成一个0到5的随机数,加上1后就得到了1到6之间的随机整数,代表骰子的点数。`println`语句则用于打印出掷出的点数。 如果你的项目中需要掷多个骰子或者...

    云南孰山彝族自治县2017_2018学年高二数学上学期寒假作业8理.doc

    第二题是计算同时包含男女同学的组合概率,第四题则是求解在特定条件下两个骰子点数组合满足条件的概率。 3. **分层抽样**:第三题涉及到分层抽样的概念,计算按照比例抽取样本的概率。 4. **几何概率**:第四题...

    掷骰子:用Java开发的掷骰子游戏

    掷骰子游戏是一种深受人们喜爱的娱乐活动,它基于概率和运气。在计算机科学领域,尤其是编程中,模拟掷骰子游戏是一个常见的练习,用于学习和掌握基础的随机数生成和条件判断等概念。本项目名为"掷骰子:用Java开发...

    elm-dice-engine:WIP 40k骰子引擎

    要详细了解 "elm-dice-engine",你需要查看源代码,了解其具体的实现方式,包括如何处理各种骰子规则、概率计算以及如何与用户界面交互。同时,可能还需要研究项目文档和测试用例来理解其功能和使用方法。

    rust_dice:生锈的骰子辊

    `rust_dice`项目可能包含测试用例,确保骰子的掷出结果符合概率分布。 6. **Cargo**: - Rust的构建系统和包管理器Cargo,负责编译项目、管理依赖和构建可执行文件。项目的根目录下会有`Cargo.toml`配置文件,描述...

    08年google笔试题

    这是因为完全二叉树的节点按照层次顺序编号时,第`i`层的节点编号范围是从`2^(i-1)`到`2^i-1`。 - **选项A、B、C、D:** 根据上述原理,选项C`((K+1)/2)`是正确的计算方法,因为它考虑到了向下取整的操作,从而准确...

    C++ hat random container-开源

    3. **重复出现**:元素可以选择配置为可以重复出现,类似于掷骰子,即使已经出现过,也有可能再次被选中。 标签中的"开源软件"表明这个库是公开源代码的,允许用户查看其内部实现,进行定制和改进,同时也鼓励社区...

    Python库 | d20-framework-0.4.3.tar.gz

    1. **随机数生成器(Random Number Generator, RNG)**:游戏系统往往需要精确控制随机性,d20可能会提供一个可配置的RNG,可以模拟各种概率分布,如掷骰子结果、技能检查等。 2. **游戏规则引擎**:此库可能包含...

    risk-dice:风险桌游的简单骰子PWA

    5. **配置文件**(如 package.json):记录了项目的依赖、版本信息和构建设置。 6. **构建脚本**:用于编译 Svelte 代码,并将其转换为可部署的静态文件。 通过这个项目,开发者可以学习到如何使用 Svelte 构建 PWA...

    统计建模与R软件

    例如,在掷骰子的试验中,“出现偶数”就是一个随机事件。 **1.1.4 集合的运算** - **包含关系**:如果所有的元素A都在B中,则称A包含于B,记作A⊆B。 - **相等**:如果两个集合A和B中的元素完全相同,则称A等于B...

    微软经典测试题及详细参考答案

    这些题目涵盖了逻辑思维、数学应用、概率计算、问题解决等多个方面,这些都是IT行业常见的面试题类型,用于考察应聘者的逻辑推理能力和创新思维。下面逐一解析这些知识点: 1. **计时问题**:这类问题通常涉及时间...

    Handbook in OR & MS, Vol. 13 - simulation- 2 stochastic computer simulation

    1. **电子游戏示例**:文中首先以电子游戏为例,如纸牌游戏Solitaire或骰子游戏Yahtzee,解释了随机性在模拟中的作用。这类游戏通常需要一个真实的人类玩家,但如果将玩家替换为一个算法,并通过比较不同算法在多次...

    CrazyDice1.3

    1. **随机性与概率**:由于涉及到骰子,游戏的核心机制可能围绕概率计算,玩家需要理解和利用这些概率来制定策略。 2. **版本更新**:软件工程中的版本管理,1.3可能表示功能增强或错误修复,玩家可以期待更好的...

Global site tag (gtag.js) - Google Analytics