| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
lai123
10年前发布

Java带权重的随机数

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