项目需求是这样的,一个抽奖游戏,百分比总和是100。可以有N个奖品,有一个按钮实现平均分配。
如果100/N是正整数的话,那就非常简单了。
假设N是4,那么每个奖品中奖几率就是25%。
如果如果不是呢?假设是6,平均数是16.66666。那就应该是16、16、17、17、17、17这样分配,才比较合理。而不是简单的。前五个16,最后一个20。那么最后一个的几率就大很多。
贴一下代码吧,也是非常简单的,作为记录一下。
const handleAve = () => { const length = items.value.length const ave = (Math.floor(100 / length)) const remainder = 100 - ave * length for (let i = 0; i < length; i++) {
if (i < remainder) items.value[i].percentage = ave + 1 else items.value[i].percentage = ave } }