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
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐