JAVA 根据设置的概率生成随机数的方法
程序员文章站
2024-02-16 10:22:52
本文介绍了java 根据设置的概率生成随机数的方法,分享给大家
import java.util.arraylist;
import java.util.h...
本文介绍了java 根据设置的概率生成随机数的方法,分享给大家
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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。