/**
*
* @param total
* @param splitCount
* @param min 可不传
* @param max 可不传
* desc max*splitCount不能大于total
* @return
*/
public static Object[] splitNumber(Integer total, Integer splitCount, Integer min, Integer max) {
if(min == null || min <=0) min = 1;
if(max == null || max <=0 || (max * splitCount) > total) max = new BigDecimal((total/splitCount)+"").intValue();
if(total >= max * splitCount && total >= min * splitCount){
float minRate = new BigDecimal(min).divide(new BigDecimal(total),4,BigDecimal.ROUND_HALF_DOWN).floatValue();
float maxRate = new BigDecimal(max).divide(new BigDecimal(total),4,BigDecimal.ROUND_HALF_DOWN).floatValue();
List<Integer> resIntArr = Lists.newArrayList();
int to = 0;
for(int i =0; i < splitCount; i++){
if(i != splitCount-1){
float result = minRate + (float) (Math.random() * ((maxRate - minRate)));
int c = new BigDecimal(result).multiply(new BigDecimal(total)).intValue();
to += c;
resIntArr.add(c);
}else{
resIntArr.add(total - to);
}
}
return resIntArr.toArray();
}
return null;
}
数字拆分,指定拆分个数,最大最小
最新推荐文章于 2023-03-20 16:24:44 发布