Package org.aoju.bus.core.lang
Class Weighing<T>
java.lang.Object
org.aoju.bus.core.lang.Weighing<T>
- Type Parameters:
T- 权重随机获取的对象类型
- All Implemented Interfaces:
Serializable
权重随机算法实现
平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的 如广告投放、负载均衡等
如有4个元素A、B、C、D,权重分别为1、2、3、4,随机结果中A:B:C:D的比例要为1:2:3:4
总体思路:累加每个元素的权重A(1)-B(3)-C(6)-D(10),则4个元素的的权重管辖区间分别为[0,1)、[1,3)、[3,6)、[6,10) 然后随机出一个[0,10)之间的随机数 落在哪个区间,则该区间之后的元素即为按权重命中的元素- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionWeighing()构造Weighing(Iterable<Weighing.WeightObject<T>> weightObjs) 构造Weighing(Weighing.WeightObject<T> weightObj) 构造Weighing(Weighing.WeightObject<T>[] weightObjs) 构造 -
Method Summary
-
Constructor Details
-
Weighing
public Weighing()构造 -
Weighing
-
Weighing
-
Weighing
-
-
Method Details
-
of
-
add
-
add
增加对象权重- Parameters:
weightObj- 权重对象- Returns:
- this
-
clear
-
next
-