指定概率的算法 最少代码写出数组概率方法。数组每位表示该位的概率。int[] prob = {20,30,20,8,2,5,3,1,1,10}; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然楼主说的不是很清楚,那我就先yy一下吧!数组概率就是说,prob有10个元素,分别对应0到9的每一位;而prob的元素和为100,证明是同一个事件,就是说随机抽出一位,0到9的概率分别如prob所列。------------------------------------------思路:prob的元素映射成0到99的区间有以下关系:[20, 30, 20, 8, 2, 5, 3, 1, 1, 10] --> [20, 50, 70, 78, 80, 85, 88, 89, 90, 100]由于0到99的随机数是均匀分布的,所以每个元素占的长度,就是相当于被选中的概率。所以,只要看0到99的随机数random,在哪一个区间,就知道是哪个数字被选中了。下面代码主要就是【sum += prob[i]】和【if (random <= sum)】,其他都是假设条件。这里先假设prob的元素全部为10,这样输出结果更容易看出来他们之间的关系。楼主换成原来的prob就行。int[] prob = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10};int[] num = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int sum = 0;int random = (int) (Math.random() * 100);for (int i = 0; i < prob.length; i++) { sum += prob[i]; // 概率段 if (random <= sum) { // 一大于,就是踏入了该概率段 System.out.println("random: " + random + " - " + num[i]); break; }} java窗体中的textbox事件 用Java开发通信服务器 HashMap的奇怪问题 关于这个InputStream报错的问题? java如何调用jsp页面 华为公司 java 面试题 大家一起来讨论 java中取double类型变量中整数部分长度用什么方法? 日本要成为联合国常任理事国,安南支持,请大家来签名(2) 一个简单的类型转换问题,请高手帮忙解决!---thanks 关于代码的 读取XML 第一次用jdom包 求看写对否,报黄色感叹号,在线等 java网络编程,分包接收数据的疑惑,望大侠指点!
数组概率就是说,prob有10个元素,分别对应0到9的每一位;
而prob的元素和为100,证明是同一个事件,就是说随机抽出一位,0到9的概率分别如prob所列。------------------------------------------思路:
prob的元素映射成0到99的区间有以下关系:
[20, 30, 20, 8, 2, 5, 3, 1, 1, 10] --> [20, 50, 70, 78, 80, 85, 88, 89, 90, 100]
由于0到99的随机数是均匀分布的,所以每个元素占的长度,就是相当于被选中的概率。
所以,只要看0到99的随机数random,在哪一个区间,就知道是哪个数字被选中了。下面代码主要就是【sum += prob[i]】和【if (random <= sum)】,其他都是假设条件。
这里先假设prob的元素全部为10,这样输出结果更容易看出来他们之间的关系。楼主换成原来的prob就行。
int[] prob = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10};
int[] num = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int sum = 0;
int random = (int) (Math.random() * 100);
for (int i = 0; i < prob.length; i++) {
sum += prob[i]; // 概率段
if (random <= sum) { // 一大于,就是踏入了该概率段
System.out.println("random: " + random + " - " + num[i]);
break;
}
}