【javascript】生成n个总数为x的随机数,随机数求和等于固定值【算法】
生成n个总数为x的随机数,随机数求和等于固定值按顺序分,分了第一个的后,剩下的再分第二个,分完倒是第二的后,剩下的都给倒数第一个缺点:第一个永远没有超过一半的机会;容易越分越小;首位通常是最大的数。思路2:小朋友分苹果,每个苹果随机分配给某一个小朋友,分x次非常公平的分法缺点:循环次数太多了...
·
生成n个总数为x的随机数,随机数求和等于固定值
思路1:
按顺序分,分了第一个的后,剩下的再分第二个,分完倒是第二的后,剩下的都给倒数第一个
缺点:第一个永远没有超过一半的机会;容易越分越小;首位通常是最大的数。
var arr = new Array(10).fill(0)
function randGenerator(n, x) {
var arr = [];
var fSumTmp = x;
var iAcc = 0;
while (ResTem<n){
for (var i = 0; i < (n -1); i++) {
var iTmp = Math.ceil(Math.random() * (fSumTmp/2));
arr.push(iTmp);
fSumTmp -= iTmp;
iAcc += iTmp;
}
ResTem = sum-iAcc;
}
if (ResTem>0 && ResTem<n){
for (i=0; i<ResTem; i++){
value_idx = parseInt(Math.random()*x);
arr[num] ++;
}
}
}
思路2:
小朋友分苹果,每个苹果随机分配给某一个小朋友,分x次
非常公平的分法
缺点:循环次数太多了
var arr = new Array(n).fill(0)
for(var i=0;i<x;i++){
var num = parseInt(Math.random()*10)
arr[num] ++
}
console.log(arr)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)