生成添加到给定总和的N个随机数的标准方法是将总和视为数字行,在该行上生成N-1个随机点,对其进行排序,然后将这些点之间的差用作最终值。要获得最小值1,请从您的总和中减去N,然后运行给定的算法,然后将1加回每个段。
public class Rand { public static void main(String[] args) { int count = 8; int sum = 100; java.util.Random g = new java.util.Random(); int vals[] = new int[count]; sum -= count; for (int i = 0; i < count-1; ++i) { vals[i] = g.nextInt(sum); } vals[count-1] = sum; java.util.Arrays.sort(vals); for (int i = count-1; i > 0; --i) { vals[i] -= vals[i-1]; } for (int i = 0; i < count; ++i) { ++vals[i]; } for (int i = 0; i < count; ++i) { System.out.printf("%4d", vals[i]); } System.out.printf("n"); }}


