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; } }
本文由用戶 lai123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!