你可以先想象一下,先给 y 个数字位置都分配 a,那么问题就变成了把数字(x -ya)随机分成 y 个数字,且这些数字满足[0, b - a]。 现在问题就可以转化为,将一个数字 X 分成 y 个数字,这些数字满足[0, A],其中 X = x -ya, A = b - a 。 再提供一个取巧的方法,应该不是完全随机。 先生成 y 个[0, A]的数字,分别为 a1 到 ay,其和为 C 。然后对原 ai 进行转化,即 ai = ai * C / X 。这个时候 ai 数列的和就大致与 X 相等,将其和与 X 的差值再随机分配给任一个数字即可。如果无法分配则继续往第二第三个数字分。