本文介绍了JAVA 根据设置的概率生成随机数的方法,分享给大家
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; public class RandomTest { // String 可以为任意类型 也可以自定义类型 static Map<String, Integer> keyChanceMap = new HashMap<String, Integer>(); static { keyChanceMap.put( "aaa" , 500 ); keyChanceMap.put( "bbb" , 1500 ); keyChanceMap.put( "ccc" , 2000 ); keyChanceMap.put( "ddd" , 3000 ); keyChanceMap.put( "eee" , 3000 ); } public static void main(String[] args) { Map<String, Integer> count = new HashMap<String, Integer>(); List<String> list = new ArrayList<>(); String item = null ; for ( int i = 0 ; i < 10000 ; i++) { item = chanceSelect(keyChanceMap); list.add(item); 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) + " 次" ); } Random rand = new Random(); int num = rand.nextInt( 10000 ); System.out.print( "最终选择的随机数为:" +list.get(num)); } public static String chanceSelect(Map<String, 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<String, Integer> entry : keyChanceMap.entrySet()) { rand -= entry.getValue(); // 选中 if (rand <= 0 ) { String item = entry.getKey(); return item; } } return null ; } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/bunuo/p/6305916.html