getRadomeInDay

本文介绍了一种将指定总数的整数随机分布在一天24小时内的算法实现。该算法通过设置基数并考虑余数,确保了整数总数不变的同时,实现了较为均匀且符合特定条件的分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法:  

HashMap<Integer, ArrayList<Integer>> hm = getRadomeInDay(1000 , 100);
  System.out.println(hm.toString()); 

 

原码

/total:总和

/count:要分成几个整数

public HashMap<Integer, ArrayList<Integer>> getRadomeInDay(int total  , int count){
  HashMap<Integer, ArrayList<Integer>> hm = new HashMap<Integer, ArrayList<Integer>>();
  for(int i = 0 ; i<24 ; i++){
   hm.put(i, new ArrayList<Integer>()); //24小时的数字分布,key为小时数,value为分布的整数list
  }
  
  int base = total/count;//随机数的基数
  int yushu = total - base*count;//保证总和为total的余数
  
  for(int i = 0 ; i<(count-1)/2 ; i ++){
   int radomeInt = (int) (Math.random()*base);
   
   int hourInDay1 =  (int) (Math.random()*24);
   int hourInDay2 =  (int) (Math.random()*24);   
   
   if(hourInDay1<=6 || hourInDay1>=18 ){//白天数据多一些/1到6点,18点到23点为晚上。如果为晚上,则重新随机一个数字
     hourInDay1 =  (int) (Math.random()*24);
   }

 

   if(hourInDay2<=6 || hourInDay2>=18 ){//白天数据多一些/1到6点,18点到23点为晚上。如果为晚上,则重新随机一个数字
     hourInDay2 =  (int) (Math.random()*24);
   }
   
   hm.get(hourInDay1).add(base + radomeInt);
   hm.get(hourInDay2).add(base - radomeInt);

  }
  

//////////////////////////下面这一行要调整一下,最终分出来的整数个数会与count不一样
 hm.get((int) (Math.random()*24)).add(yushu);
  
  
  return hm;
  
 }

电动汽车数据集 该综合数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕获了技术规格、性能、定价、制造原产地、销售和安全相关属性。每一行代表由Vehicle_ID标识的唯一车辆列表。 主要特征 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨越多个年份(旧版和即将推出的)。 数据质量说明: 某些行的某些字段可能缺失(空白)。 多个分类字段包含不同的特定于供应商的值(例如,Charging_Type、Battery_Type)。 单位在列之间混合;注意千瓦时、公里、小时、美元、克/公里和额定等级。 列 Vehicle_ID 每个车辆记录的唯一标识符。 制造者 车辆品牌或 OEM。 型 年 Battery_Type 使用的电池化学/技术 Battery_Capacity_kWh 标称电池容量(以千瓦时为单位)。 Range_km 充满电后声称的行驶里程(公里)。 Charging_Type 主要的充电接口或功能。 Charge_Time_hr 大致充电时间(小时),上下文因充电方法而异 Price_USD 以美元为单位的指示性车辆价格。 颜色 Country_of_Manufacture 车辆制造/组装的国家/地区。 Autonomous_Level 自动化能力级别(例如,0-5),可能包括子级别的小数。 CO2_Emissions_g_per_km 尾气二氧化碳排放量(以克/公里为单位)(纯电动汽车通常为 0) Safety_Rating 安全等级 Units_Sold_2024 在 2024 年售出的单位 Warranty_Years 保修期(以年为单位)。
【CRM客户管理系统(vue+springboot)】是一个典型的现代Web应用程序开发案例,它结合了前端的Vue.js框架和后端的Spring Boot技术,用于实现高效、便捷的客户关系管理功能。这个系统具备基础的用户认证机制,如登录和注册,并且支持对客户数据的基本操作,包括增加、删除、修改和查询。 Vue.js是当前流行的JavaScript前端框架之一,以其轻量级、组件化和易于学习的特点而受到开发者喜爱。在CRM系统中,Vue.js负责处理用户界面的交互和动态更新,构建可复用的组件,提高代码的可维护性和开发效率。Vue Router作为官方的路由库,帮助管理页面导航和状态,实现单页应用(SPA)的流畅体验。 Spring Boot是Java领域的一个微服务框架,以其快速开发、内置依赖管理和自动配置等特性简化了后端服务的构建。在这个CRM系统中,Spring Boot被用来搭建RESTful API,为前端提供数据接口。Spring Data JPA和Hibernate等ORM工具可以方便地操作数据库,简化数据访问层的代码编写。同时,Spring Security可能被用于实现用户身份验证和授权,确保系统的安全性。 系统的核心功能包括用户管理模块,它实现了用户注册和登录功能。注册通常涉及用户信息的收集与验证,登录则需要安全的身份验证,如哈希加盐密码存储,防止密码泄露。此外,还有客户管理模块,通过API接口,前端可以向后端发送HTTP请求,执行CRUD操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)客户数据。这通常涉及到数据库设计,如实体类的定义、表结构的映射以及事务管理,确保数据的一致性。 在开发过程中,前端与后端通过JSON格式的数据交换信息,利用Ajax进行异步通信,使得用户体验更加流畅。开发完成后,可能还需要进行性能优化,如使用缓存来减少数据库查询,以及接口调用的优化,提升系统响应速度。 CRM客户管理系统(vue+springboot)展示了现代Web开发的常见架构,涉及到了前端UI设计、后端服务构建、数据库操作、用户认证和权限控制等多个领域的知识点。对于想要学习或提升这些技能的IT从业者来说,这是一个很好的实践项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值