一、将1个数随机拆分成N个数(整数或小数)
function chaifen(zongliang,danwei,geshu){
//将总量按个数随机拆分,某些单位拆分为整数,某些单位拆分成小数(暂按两位小数),允许为0
math.randomize();
if geshu=1 return {zongliang};
var jieguo={};
var xiaoshu;
if (danwei="米" or danwei="吨" or danwei="千克"){xiaoshu=2;}
else xiaoshu=0;
for (i=1;geshu){table.push(jieguo,math.random())}//随机化结果数组,可以给元素添加相同的基数调节离散程度
var he=reduce(jieguo,λ(prev,next) prev + next)
jieguo=table.map(jieguo,λ(v) math.round(v*zongliang/he,xiaoshu) )//初始结果,下面修正
he=math.round(reduce(jieguo,λ(a,b)a+b),xiaoshu);//重新求和
var cha=math.round(he-zongliang,xiaoshu);//计算当前误差
var zuida=reduce(jieguo,function(prev,next,index,arr){return next>arr[prev]?index:prev},1);//最大值索引
//var zuida=table.find(jieguo,math.max(table.unpack(jieguo)));
jieguo[zuida]=math.round(jieguo[zuida]-cha,xiaoshu);//最大值减去误差值