你可以用纯数学的方法来解决这个问题。在想要的范围内随机选择一个数字(称为n)
下一个数字是avg+abs(n-avg)
重复这个步骤,直到你填写你想要的数字
如果所需数字的数量不是偶数-只需选择其中一个数字作为平均值,然后您将需要生成k-1个数字(偶数)
**编辑**
您可以使用这段代码来处理初始列表以满足平均值的要求,这样生成的列表就不是对称的。(比生成列表更好,直到找到正确的列表)import random
def generate_numbers(wanted_avg, numbers_to_generate, start, end):
rng = [i for i in range(start, end)]
initial_selection = [random.choice(rng) for _ in range(numbers_to_generate)]
initial_avg = reduce(lambda x, y: x+y, initial_selection) / float(numbers_to_generate)
print "initial selection is: " + str(initial_selection)
print "initial avg is: " + str(initial_avg)
if initial_avg == wanted_avg:
return initial_selection
off = abs(initial_avg - wanted_avg)
manipulation = off * numbers_to_generate
sign = -1 if initial_