1.比如我现在请求到一个1000,要拆分成60个随机数,而这60个随机数相加刚刚好等于1000?
2.我要在五分钟内从0每隔5秒慢慢加60次到1000,这样可以实现吗?
3.六十次后再次请求一个数,比如是3000,那么,把3000再次拆分成60个随机数,从1000慢慢在五分钟内加到4000
求大神相助
1.比如我现在请求到一个1000,要拆分成60个随机数,而这60个随机数相加刚刚好等于1000?
2.我要在五分钟内从0每隔5秒慢慢加60次到1000,这样可以实现吗?
3.六十次后再次请求一个数,比如是3000,那么,把3000再次拆分成60个随机数,从1000慢慢在五分钟内加到4000
求大神相助
采用 https://www.zhihu.com/questio... 里讨论的微信分红包算法,达到较为平均的随机分配。
var arr = getRandomNum(1000, 60);
console.log(arr);
console.log(arr.reduce((pre, v) => pre + v, 0));
function getRandomNum(num, times) {
let res = [];
if (times === 1) {
res.push(num);
return res;
};
let max = num / times * 2;
let current = 1 + (~~(Math.random() * max - 1));
res.push(current);
return res.concat(getRandomNum(num - current, --times));
}
8 回答4.9k 阅读✓ 已解决
6 回答3.7k 阅读✓ 已解决
5 回答3k 阅读✓ 已解决
5 回答6.5k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
6 回答1.9k 阅读✓ 已解决