/**
*将一个数拆分成任意几个不小于m数的和
* @param n 将要被拆分成的数量
* @param sum 要拆分的数
* @param m 最小的数
* @return
*/
public static List splitInteger(int n, double sum,double m) {
//随机抽取n-1个小于sum的数
List<Double> list = new ArrayList();
//将0和sum加入到里list中
list.add(0.0);
//每个数至少为m
sum = sum - n*m;
list.add(sum);
//生成n-1个小于sum的随机数
double temp = 0;
for (int i = 0; i < n - 1 ; i++) {
temp = new BigDecimal((Math.random() * sum)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
list.add(temp);
}
Collections.sort(list);
List nums = new ArrayList();
for (int i = 0; i < n; i++) {
//每份最少为m
double v = list.get(i + 1) - list.get(i) + m;
nums.add(new BigDecimal(v).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
}
return nums;
}
将一个浮点数随机拆分成n个不小于m的浮点数
数拆分算法
最新推荐文章于 2024-02-02 21:57:47 发布
本文介绍了一种将指定数值拆分为多个不小于特定阈值的数的算法实现。该算法通过生成随机数并排序来达到目的,确保了拆分后的每个数值都符合预设条件。
944

被折叠的 条评论
为什么被折叠?



