一个按权重(weight)进行LB的算法
算法 一个 进行 权重 weight
2023-09-11 14:17:56 时间
package netty; import com.google.common.collect.ImmutableList; import lombok.SneakyThrows; import java.util.List; import java.util.Objects; import java.util.Random; /** * Test * * @author xfyou */ public class Test { @SneakyThrows public static void main(String[] args) { List<Integer> weightList = ImmutableList.of(0, 0, 0, 0); boolean allHaveTheSameWeight = isSameWeight(weightList); if (!allHaveTheSameWeight) { selectOneByWeight(weightList); } else { selectOneRandom(weightList); } } /** * 如果所有的权重都是一样的,则随机选择一个 */ private static void selectOneRandom(List<Integer> weightList) { System.out.println("selecded list index:" + new Random().nextInt(weightList.size())); } /** * 如果所有的权重不一样,则优化选择权重高的 */ private static void selectOneByWeight(List<Integer> weightList) { int offset = new Random().nextInt(weightList.stream().mapToInt(i -> i).sum()); for (int i = 0, len = weightList.size(); i < len; i++) { offset -= weightList.get(i); if (offset < 0) { System.out.println("selected weight:" + weightList.get(i) + ", selected index:" + i); break; } } } /** * 判断所有的权重是否一样 */ private static boolean isSameWeight(List weightList) { boolean allHaveTheSameWeight = true; for (int i = 0, len = weightList.size(); i < len; i++) { if (i > 0) { if (!Objects.equals(weightList.get(i), weightList.get(i - 1))) { allHaveTheSameWeight = false; break; } } } return allHaveTheSameWeight; } }
相关文章
- 一个计算数字数组概览的算法2
- Java实现 蓝桥杯 算法训练 Airport Configuration
- Java实现 蓝桥杯 算法提高 Monday-Saturday质因子
- 深度学习常用优化器算法Optimizer详解
- 一个计算数字的步数算法
- 程序员的算法趣题Q06: 改版考拉兹猜想
- Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)
- PHP面试题:使用PHP描述快速排序算法,对象可以是一个数组?
- 简述几种常用的排序算法
- 智能优化算法:人工电场优化算法-附代码
- 柯西变异和自适应权重优化的蝴蝶算法-附代码
- 【编程实践】使用golang 解析json字符串代码 / 使用 golang 实现一个HashSet / 使用C语言实现KMP算法,并加上非常详尽的注释。
- 排序算法复习
- 设计一个算法,求非空二叉树中指定的第k层(k>1)的叶子节点的个数
- 白话经典算法系列之中的一个 冒泡排序的三种实现
- 白话经典算法系列之中的一个 冒泡排序的三种实现
- hmac算法 ——就一个hash+xor 感觉不安全啊 抗彩虹表攻击和穷举攻击都比较弱
- 统计质数算法——厄拉多塞筛法. 比如说求20以内质数的个数,首先0,1不是质数.2是第一个质数,然后把20以内所有2的倍数划去.2后面紧跟的数即为下一个质数3,然后把3所有的倍数划去.3后面紧跟的数即为下一个质数5,再把5所有的倍数划去.以此类推.
- Batch Normalization原理及其TensorFlow实现——为了减少深度神经网络中的internal covariate shift,论文中提出了Batch Normalization算法,首先是对”每一层“的输入做一个Batch Normalization 变换
- 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!
- 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度
- 数据结构与算法_26 _ 红黑树(下):掌握这些技巧,你也可以实现一个红黑树
- 数据结构与算法_14 _ 排序优化:如何实现一个通用的、高性能的排序函数
- 【数据结构与算法】什么是双向链表?并用代码手动实现一个双向链表
- C++算法之玩转双指针