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

发布时间 - 2026-01-11 02:37:08    点击率:

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

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


# java  # 概率随机数  # java按概率生成随机数  # java随机数概率  # 算法  # Java中生成随机数的实现方法总结  # Java生成随机数的2种示例方法代码  # 史上最全的java随机数生成算法分享  # java生成指定范围随机数的多种代码  # Java随机值设置(java.util.Random类或Math.random方法)  # 随机数  # 给大家  # 自定义  # 大家多多  # 数为  # 出现了  # gt  # static  # Integer  # String  # lt  # keyChanceMap  # ccc  # bbb  # put  # aaa  # RandomTest  # brush  # import 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深圳网站制作平台,深圳市做网站好的公司有哪些?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  如何在橙子建站中快速调整背景颜色?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何在宝塔面板中修改默认建站目录?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Python自动化办公教程_ExcelWordPDF批量处理案例  PythonWeb开发入门教程_Flask快速构建Web应用  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  免费网站制作appp,免费制作app哪个平台好?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel如何实现本地化和多语言支持?(i18n教程)  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何使用Livewire构建动态组件?(入门代码)  JS弹性运动实现方法分析  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何快速搭建支持数据库操作的智能建站平台?  油猴 教程,油猴搜脚本为什么会网页无法显示?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  昵图网官方站入口 昵图网素材图库官网入口  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  如何用PHP快速搭建高效网站?分步指南  Laravel怎么实现验证码(Captcha)功能  JavaScript Ajax实现异步通信  香港服务器如何优化才能显著提升网站加载速度?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel如何实现一对一模型关联?(Eloquent示例)  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何生成腾讯云建站专用兑换码?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何处理文件下载请求?(Response示例)  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Swift开发中switch语句值绑定模式  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  浅谈redis在项目中的应用  Laravel如何为API生成Swagger或OpenAPI文档  如何在宝塔面板中创建新站点?