Просмотр исходного кода

提交测试代码

Signed-off-by: chenken <chenken@qmth.com.cn>
chenken 8 лет назад
Родитель
Сommit
fda965b63e
1 измененных файлов с 57 добавлено и 0 удалено
  1. 57 0
      cqb-starter/src/test/java/com/qmth/cqb/ProbabilityTest.java

+ 57 - 0
cqb-starter/src/test/java/com/qmth/cqb/ProbabilityTest.java

@@ -0,0 +1,57 @@
+package com.qmth.cqb;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+/**
+ * Java 从一组数据随机选择并可设置出现概率
+ * @author pc
+ *
+ */
+public class ProbabilityTest {
+  
+     //String 可以为任意类型 也可以自定义类型
+     static Map<Object, Integer> keyChanceMap = new HashMap<Object,Integer>();
+     static{
+    	 keyChanceMap.put("试卷A", 100);
+     }
+     
+     public static void main(String[] args) {
+         Map<String, Integer> count = new HashMap<String,Integer>();
+         for (int i = 0; i < 100; i++) {
+             String item = chanceSelect(keyChanceMap);
+             if (count.containsKey(item)) {
+                 count.put(item, count.get(item) + 1);
+             } else {
+                 count.put(item, 1);
+             }
+         }
+         for(String id : count.keySet()){
+             System.out.println(id+"\t被选中了 "+count.get(id)+" 次");
+         }
+     }
+ 
+     
+     public static String chanceSelect(Map<Object, Integer> keyChanceMap) { 
+         if(keyChanceMap == null || keyChanceMap.size() == 0) {
+        	 return null;  
+         }
+         Integer sum = 0;  
+         for (Integer value : keyChanceMap.values()) {  
+              sum += value;  
+         }  
+         // 从1开始  
+         Integer rand = new Random().nextInt(sum) + 1;  
+           
+         for (Map.Entry<Object, Integer> entry : keyChanceMap.entrySet()) {
+             rand -= entry.getValue();
+             // 选中
+             if (rand <= 0) {
+                 String item = entry.getKey()+"";
+                 return item;
+             }
+         } 
+           
+         return null;  
+    }
+ }