import 'dart:math'; class NumberTool { /// 生成随机数 /// @allNum: 随机数的和 /// @num: 随机数的数量 List randomNum(int allNum, {int num = 10}) { Random random = Random(); // 基础数字 最小值 int base = allNum ~/ 1.5 ~/ num; List numbers = List.generate(num, (index) => base); for (int i = 0; i < num - 1; i++) { int randomNumber = random.nextInt(base); // 生成0到base之间的随机整数 numbers[i] += randomNumber; } int sum = numbers.reduce((a, b) => a + b) ; int lastNumber = allNum - sum; // 将最后一个数 /2 再/数量 取整数 base = (lastNumber / 2) ~/ (num); for (int i = 0; i < num - 1; i++) { numbers[i] += base; } sum = numbers.reduce((a, b) => a + b); lastNumber = allNum - sum; // 将最后一个数 切一半 随机加到数组中 base = lastNumber ~/ 2; numbers[ random.nextInt(num - 1)] = base; sum = numbers.reduce((a, b) => a + b); lastNumber = allNum - sum; numbers.add(lastNumber); // 打乱顺序 numbers.shuffle(); return numbers; } }