Java带权重的随机数

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

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

上一篇:实现HTML编码和解码的JavaScript工具类

下一篇:iOS开发实践之GET和POST请求