Java带权重的随机数
2018-07-20 来源:open-open
[Java]代码
package test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; //带权重的随机数 //面试的时候面试官问道一个这样的问题 //A、B、C三个字符分别出现的概率是30%,40%,30% //分析:首先1-100随机产生一个数,判断这个数,1-30出现的概率是30%, 31—70出现的概率是40%, 71-100出现的概率是30% public class WeightRandom { public static void main(String[] args) { Random ran = new Random(); String str=getWanfei(ran.nextInt(100)); Map<String,Object> map = new HashMap<String,Object>(); map.put("key","A"); map.put("value","30"); Map<String,Object> map1 = new HashMap<String,Object>(); map.put("key","B"); map.put("value","70"); List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); list.add(map); list.add(map1); System.out.println( getWeight(list,ran.nextInt(100))); } //知道权重的情况下 public static String getWanfei(int num){ if(num>=1 && num<=30){ return "A"; }else if(num>=31 && num<70){ return "B"; }else{ return "C"; } } //如果A、B、C的个数不确定 ,权重的总数也也不确定 public static String getWeight(List<Map<String,Object>> list,int ran){ //map里放的是a,b,c 值,和每个a、b、c对应的权重 int sum=0; int total = list.size(); for(int i=0;i<total;i++){ sum+=Integer.parseInt(list.get(i).get("value").toString()); if(ran<=sum){ return list.get(i).get("key").toString(); } } return null; } }
标签: 代码
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐