JAVA权重计算(根据自己理解计算的,不喜勿喷)
/**
* 权重实体类,用于接收需要计算权重的数据和每个数据的权重
* @param <T>
*/
public class Height<T> {
private int height;
private T t;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
/**
* Demo用于作为测试类
*
*/
public class Demo {
private String id;
private Integer height;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getHeight() {
return height;
}
public void setHeight(Integer height) {
this.height = height;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* 权重计算实现类(根据自己的理解来计算权重的,不喜勿喷)
*
* @param <T> 最终需要返回的数据
*/
public class WeightUtils<T> {
/**
* 计算权重后获取的数据
* @param list 需要进行权重计算的数据
* @return
*/
public static <T>T getT(List<Height<T>> list){
/*定义一个数字,用于统计权重的和*/
int num = 0;
/*遍历传入的集合,计算总权重*/
for (int i = 0; i < list.size(); i++) {
num += list.get(i).getHeight();
}
/*在总权重的区间获取一个随机数*/
int random = getRandom(num);
num = 0;
for (int i = 0; i < list.size(); i++) {
num = num + list.get(i).getHeight();
if (num >= random) {
return list.get(i).getT();
}
}
return null;
}
/**
* 获取随机数
* @param num
* @return
*/
public static int getRandom(int num){
double random = Math.random()*num;
return (int)random;
}
/**
* 测试的main方法计算权重
* @param args
*/
public static void main(String[] args) {
/*将Demo进行实例化,用于表示需要计算权重的数据*/
Demo demo1 = new Demo();
demo1.setId(UUID.randomUUID().toString());
demo1.setHeight(100);
Demo demo2 = new Demo();
demo2.setId(UUID.randomUUID().toString());
demo2.setHeight(200);
Demo demo3 = new Demo();
demo3.setId(UUID.randomUUID().toString());
demo3.setHeight(300);
Demo demo4 = new Demo();
demo4.setId(UUID.randomUUID().toString());
demo4.setHeight(400);
Demo demo5 = new Demo();
demo5.setId(UUID.randomUUID().toString());
demo5.setHeight(500);
Demo demo6 = new Demo();
demo6.setId(UUID.randomUUID().toString());
demo6.setHeight(600);
List<Height<Demo>> list = new ArrayList<Height<Demo>>();
/*将Height进行实例化,用于存储前面的demo*/
Height<Demo> w1 = new Height<Demo>();
w1.setT(demo1);
w1.setHeight(demo1.getHeight());
Height<Demo> w2 = new Height<Demo>();
w2.setT(demo2);
w2.setHeight(demo2.getHeight());
Height<Demo> w3 = new Height<Demo>();
w3.setT(demo3);
w3.setHeight(demo3.getHeight());
Height<Demo> w4 = new Height<Demo>();
w4.setT(demo4);
w4.setHeight(demo4.getHeight());
Height<Demo> w5 = new Height<Demo>();
w5.setT(demo5);
w5.setHeight(demo5.getHeight());
Height<Demo> w6 = new Height<Demo>();
w6.setT(demo6);
w6.setHeight(demo6.getHeight());
/*将权重实体类存放到集合中*/
list.add(w1);
list.add(w2);
list.add(w3);
list.add(w4);
list.add(w5);
list.add(w6);
/*定义六个int类型的数字,用于最终*/
int a1 = 0;
int a2 = 0;
int a3 = 0;
int a4 = 0;
int a5 = 0;
int a6 = 0;
int sum = 200000;
for (int i = 1; i <= sum; i++) {
Demo demo = getT(list);
if (demo == demo1) {
a1 ++;
}
if (demo == demo2) {
a2 ++;
}
if (demo == demo3) {
a3 ++;
}
if (demo == demo4) {
a4 ++;
}
if (demo == demo5) {
a5 ++;
}
if (demo == demo6) {
a6 ++;
}
}
/*输出权重和除以每个demo出现的次数,计算出来的值越小权重越高*/
System.out.println("a1========="+a1+"============"+(double)sum/(double)a1);
System.out.println("a2========="+a2+"============"+(double)sum/(double)a2);
System.out.println("a3========="+a3+"============"+(double)sum/(double)a3);
System.out.println("a4========="+a4+"============"+(double)sum/(double)a4);
System.out.println("a5========="+a5+"============"+(double)sum/(double)a5);
System.out.println("a6========="+a6+"============"+(double)sum/(double)a6);
/*计算所有权重出现的概率之和*/
double z = (double)a1/(double)sum+(double)a2/(double)sum+(double)a3/(double)sum+(double)a4/(double)sum+(double)a5/(double)sum+(double)a6/(double)sum;
System.out.println(z);
/*计算每个demo出现的次数之和,用于判断demo出现的次数之和是不是等于遍历的次数,用于判断是否有遗漏的情况*/
System.out.println(a1+a2+a3+a4+a5+a6);
}
}
JAVA权重计算(根据自己理解计算的,不喜勿喷)相关推荐
- 7年java水平_7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷
7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷 原创编程仔日常2020-10-13 10:18:21 趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以 ...
- java 7年_笃学私教:7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷!
原标题:笃学私教:7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷! 趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以为戒,不要多走前人走过的弯路,浪费 ...
- java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)
PS→无奈:拥有梦想只是一种智力,实现梦想才是一种能力. 空闲之余就把先前做过的一个通过ElasticSearch的聚合来实现查询当月实际签到的天数记录一下,纯留下点记忆,大家勿喷. 1.如果不了解e ...
- JAVA基础个人总结,不喜勿喷
文章目录 **Java基础语法** **计算机理论基础** **数据类型** 基本数据类型: 引用数据类型: **运算符** 位运算符 : 移位运算符 << : **流程控制**: 分支流 ...
- Java面试题大全(作者悉心整合,不喜勿喷,有错还望指正)
经过这些年的沉浮,积累了不少工作中遇到以及别人文章上看到的问题.都一一记下,而后思考.最近也是工作繁忙,博客更新不够快,还望大家一直关注哦!话不多说,总结如下. 本文会按技能模块划分文章段落,每个模块 ...
- Java开发私教_笃学私教:7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷...
趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以为戒,不要多走前人走过的弯路,浪费时间.到今年年底结束,我做Java开发已经七年的时间了,现在月薪37k已经算知足 ...
- java编程题有难度的_算法与编程面试题 不喜勿喷 难度指数:*****...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 3.编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad. (大家正在做上面这道 ...
- 几个java小问题代码(大神不喜勿喷)
这里用到了 import java.util.*; (1)输入一个五位数判断是否是回文数? public class Yule{ public static void main(String []ar ...
- 东软成都java培训只有两个月_我来为东软说句公道话!【不喜勿喷】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 说实话,很多人埋怨学院那样的不是,这样的不是,确实有失公正.不可否认,学院有不尽人意的地方,但是试想,众口难调,有那个学校能做到让所有人都满意呢? 首先, ...
- java生成随机账号(SpringBoot结合Mybatis,入门勿喷,如有侵权请联系删除。)
直接上代码 1.这是随机数生成的Utils工具类 /** * @Description: 生成字符串随机数(转为Long型) * @Auther: ZhongZH * @Date:2022/3/10 ...
最新文章
- Perforce使用之创建DEPOT流程
- linux终端信息读取,linux系统 如何通过终端查看信息
- 51nod 1499 (最小割)
- Spring IOC 组件概述
- Mybatis_映射文件配置
- Android之系统服务-WindowManager
- linux进程网络流量使用查询,linux centos 查看进程网络流量状态、网络流量(使用nethogs、nload)...
- 单点服务器微信公众号,腾讯云联合微信降低开发门槛 微信生态从单点云开发到全面云开发...
- Vue 中的 v-cloak 作用及用法
- session的保存方式.
- STM8L开发环境配置
- WinServer-the security database on the server does not have a computer account for
- CSAPP实验二——bomb lab实验
- android6 wifi耗电,移动端耗电量测试方法总结
- UE4.26水系统和浮力系统
- 与或树的盲目搜索和启发式搜索
- css 延时几秒代码,CSS3 会聚展开文字动画实例及animation-delay属性规则
- 点到平面的距离(最短距离)
- 华硕zx50j笔记本 拆机教程 换风扇教程
- locate用主动还是被动_improve到底是直接用被动式还是用主动表被动
热门文章
- My Fifty-fifth Page - 子集 - By Nicolas
- 让天底下没有难接的支付|支付宝网银直连转账到银行卡对接故事续集 支付对接不是一个单纯技术问题 网银直连转账到银行卡开通方式揭晓
- 跨境电商独立站海外引流渠道:Quora运营技巧
- 光棍.com市场推广策划书(爆笑)
- html面包屑菜鸟,同一产品页多个面包屑导航?
- 棋牌游戏“拖拉机”牌型提取
- 关于weight decay
- 增长率用计算机怎么算,增长率计算公式(excel公式来计算平均增长率的方法)...
- 基于STM32F103将采集的温度-湿度值通过串口输出,用OLED屏显示自己的学号和姓名以及显示AHT20的温度和湿度,滑动显示长字符
- Python xlwt 操作 excel 表格基础(三):单元格格式、字体格式、对齐方式、边框及填充等