如何优化JavaScript中根据总数生成随机数,避免负数出现?

根据总数生成随机数的javascript实现优化

本文将探讨如何根据一个给定的总数,结合已有的数据结构,生成一系列随机数,并对原代码中出现的负数问题进行优化。 问题源于需要根据数组arr中每个对象的test属性值(表示数据列数),生成一定数量(总数为29)的随机数,并将其分配到对应的列中。原代码在处理总数分配时出现溢出,导致部分随机数出现负值。

原代码的核心问题在于对value的更新方式。 if(num

改进后的代码通过调整步长step的计算方式,避免了这个问题。 新的代码采用了下取整运算符| 0 来计算step,并每次迭代都递减count以及num,确保step在剩余总数中平均分配。 这样,在每个迭代中,step都会根据剩余总数进行调整,避免了之前代码中由于value的提前截断而造成的分配不均问题。

以下是优化后的代码:

立即学习“Java免费学习笔记(深入)”;

function filterate(list, num = 29) {    let data = list.map((item, index) => {      return Array.from({length: Number(item.test)}).map(citem => {        return {          min: 0,          max: 0,          num: 0,        }      })    })        let max = Math.max(...list.map(i => Number(i.test)));    let value = 0;    let current = 1;    let count = list.reduce((n, i) => n + Number(i.test), 0)        for (let index = 0; index  {        if(item[index]){                      let step = num / count | 0 // 下取整          count-- //循环计算step,确保step在剩下的始祖中平均分配          num-=step                      item[index].min = value + 1          value += step          item[index].max = value          item[index].num= Math.floor(Math.random() * (item[index].max - item[index].min + 1)) + item[index].min        }      })    }    return data;}

通过这种改进,确保了每个随机数的范围都在合理的区间内,避免了负数的产生,更有效地解决了根据总数生成随机数的问题。

以上就是如何优化JavaScript中根据总数生成随机数,避免负数出现?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1503464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月20日 01:50:34
下一篇 2025年12月20日 01:50:41

相关推荐

发表回复

登录后才能评论
关注微信