实现二倍均值法 抢红包

该算法用JavaScript编写,用于实现二倍均值法的红包分配。它接受总金额和红包个数作为参数,通过循环和随机数生成每个红包的金额,确保最后一个红包包含剩余金额。随机数的使用可能导致每次运行结果不同,如需一致性可采用固定种子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用javascript实现二倍均值法 抢红包

function getRandomBonus(totalAmount, totalNum) {
  let amounts = []; // 存放每个红包的金额
  let restAmount = totalAmount; // 剩余待分配的金额
  let restNum = totalNum; // 剩余未分配的红包数

  for (let i = 0; i < totalNum - 1; i++) { // 循环 totalNum - 1 次,分配前 totalNum - 1 个红包
    let amount = Math.random() * (restAmount / restNum) * 2; // 随机生成一个金额,范围为 [0.01, 2 * restAmount / restNum - 0.01] 元
    amount = Math.floor(amount * 100) / 100; // 保留两位小数
    amounts.push(amount);
    restAmount -= amount;
    restNum--;
  }

  amounts.push(restAmount); // 把剩下的金额放到最后一个红包中
  return amounts;

该算法接受两个参数 totalAmount 和 totalNum,分别表示待分配的总金额和红包个数。在算法内部,循环 totalNum - 1 次,每次根据随机范围 
[0.01,\frac{resteAmount}{resetNum}*2-0.01] 产生一个随机金额(注意要向下取整保留两位小数),并将其存入 amounts 数组中,同时更新剩余待分配的金额和红包个数。最后将剩余的金额作为最后一个红包的金额返回即可。

需要注意的是,由于该算法使用了随机数,因此每次运行结果可能会不同。如果在实际应用中需要保证随机结果的一致性,可以通过生成一组随机种子来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值