首页 > 开发 > Java > 正文

JAVA 根据设置的概率生成随机数的方法

2024-07-13 10:10:29
字体:
来源:转载
供稿:网友

本文介绍了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;  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表