权重随机算法的java实现

权重随机算法确保数据按其权重比例被随机选择。通用方法是累积权重形成新数组,然后生成一个随机数落在权重总和范围内,对应选择相应元素。在Java中,可以使用TreeMap或数组+二分法来实现。例如,对于权重为[1,3,5,6]的四个元素,累积后数组为[1,4,9,15],通过生成1到15的随机数,可以按权重选择元素。LeetCode的528题展示了这种算法的应用,利用二分法提高效率。" 130854758,11605140,青少年跟随式智能书包:物联网课程设计实践,"['物联网', '课程设计', '嵌入式硬件', 'SpringBoot', 'uni-app']
摘要由CSDN通过智能技术生成

1.概述

权重随机算法就是给出一系列数据的权重,需要随机选择其中的数据,出现的概率与数据对应的权重一致,如负载均衡,广告投放。
通用解法时累积每个元素的权重,组成新的数组,然后在权重总和范围内产生一个随机数,落到哪个区间就对应哪个元素。
如四个元素A/B/C/D,对应权重为1/3/5/6,随机选出数据的概率为1:3:5:6,我们对每个元素的权重进行累加,得到[1,4,9,15],所以产生一个在1到15之间的随机数,如果随机数落在[1,2)之间,对应元素为A,如果是[2,5),对应B,如果是[5,10),对应C,如果是[10,16)对应D。
可以使用TreeMap来实现上述算法,也可以使用数组+二分法。

例题

528. 按权重随机选择

在这里插入图片描述思路:

对于w[i] [1,3,5,6],我们需要根据权重获取随机数,所以需要从头开始将权重值进行逐步累积,累积后数组为:[1,4,9,15],然后使用Random产生一个[1,15]之间的随机数,如果随机数落在[1],对应元素为0,如果随机数落在[2,4]区间,对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值