function randomSplit(m,n,minv,maxv){
var res=[];
while(n>0){
l = Math.max(minv,m-(n-1)*maxv);
r = Math.min(maxv,m-(n-1)*minv);
num = Math.floor(Math.random() * (l - r)/10)*10 + r;
n -= 1;
m -= num;
res.push(num);
}
return res;
}
我组装了一个,有时候不准确,有时候准。有误差的时候多。
3000 3 1200 1800
[1000, 1050, 960] "=" 3010
这个就误差了10.
3000 3 1200 1800
[660, 1150, 1190] "=" 3000
这个就正好3000.
minv,我取了。 M的40%
maxv,我取了, M的60%
minv是,每份最小值,
maxv是,每份最大值。
有大神吗?帮我看看吧,实在搞不定了。
M存在范围
如 3000 3 1200 1800 错误入参
M至少得3600,3000不符合范围要求,自相矛盾,入参错误又未进行参数检测,异常再正常不过。