java 抽样_Java实现采样,均分优化

看过上一篇的应该知道,在均分采样的时候,必须保证数量的顺序是从小到大。

因为,我把多出来,全部从最后一个采了,所以要保证最后一个数量是这里面最多的。

哎~,老大看后,就不爽了,说这样不行,不能全部放到最后一个。

那那那~~~,继续撸呗

直接上代码。

达到的效果:

里面模板中数量的顺序,现在不要求了。但是如果你想要数量多的,多采一些,那么需要保证按照数量降序处理

对于两个临界点的处理。

2.1 当采样总数 > 模板总数的。每个模板全采

2.1 当采样总数 < 模板个数的时候。循环遍历到的先采。这样有些模板就可能采不到。(这种根据自己的业务来设置)

2.3 当模板的个数 <= 采样总数 <= 模板的总数量。正常处理。

均分采样

/***

* 均分采样

* @param map 存放数据,需要按照数量正序排

* @param sampleTotal 需要采样的数量

*/

public static Map allocateFlowByAverage2(Map map, Integer sampleTotal) {

Map remainMap = new HashMap<>(map);

// 加上这个。!remainMap.isEmpty(),解决当采样数量多余模板中的数量

while (sampleTotal > 0 && !remainMap.isEmpty()) {

double

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值