T - 权重随机获取的对象类型public class Weighing<T> extends Object implements 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)之间的随机数 落在哪个区间,则该区间之后的元素即为按权重命中的元素| Modifier and Type | Class and Description |
|---|---|
static class |
Weighing.WeightObj<T>
带有权重的对象包装
|
| Constructor and Description |
|---|
Weighing()
构造
|
Weighing(Iterable<Weighing.WeightObj<T>> weightObjs)
构造
|
Weighing(Weighing.WeightObj<T> weightObj)
构造
|
Weighing(Weighing.WeightObj<T>[] weightObjs)
构造
|
| Modifier and Type | Method and Description |
|---|---|
Weighing<T> |
add(T obj,
double weight)
增加对象
|
Weighing<T> |
add(Weighing.WeightObj<T> weightObj)
增加对象权重
|
Weighing<T> |
clear()
清空权重表
|
static <T> Weighing<T> |
create()
创建权重随机获取器
|
T |
next()
下一个随机对象
|
public Weighing()
public Weighing(Weighing.WeightObj<T> weightObj)
weightObj - 带有权重的对象public Weighing(Iterable<Weighing.WeightObj<T>> weightObjs)
weightObjs - 带有权重的对象public Weighing(Weighing.WeightObj<T>[] weightObjs)
weightObjs - 带有权重的对象Copyright © 2019. All rights reserved.