生成平均值为48.6的150个随机数(范围20-85)
以下是一种生成150个数,范围在20至85之间,且平均值为48.6的方法:
-
首先,计算出150个数的总和:150 × 48.6 = 7290。
-
接着,将这个总和分配到150个随机数中。为了保证每个数都在20至85之间,可以采用以下方法:
- 随机生成150个数,范围在0至1之间,记为r1, r2, ..., r150。
- 对这150个数进行归一化处理,即将它们乘以65,再加上20,得到150个数,范围在20至85之间,记为x1, x2, ..., x150。
- 计算这150个数的总和sum(x1, x2, ..., x150),如果与上面的总和不一致,则进行调整。具体来说,如果sum小于7290,则随机选择一些数,将它们加上一个较小的值;如果sum大于7290,则随机选择一些数,将它们减去一个较小的值。
- 最后,将这150个数乱序输出即可。
以下是Python代码实现:
import random
# 生成150个随机数,范围在0至1之间
r = [random.random() for i in range(150)]
# 归一化处理,生成150个随机数,范围在20至85之间
x = [int(65 * ri + 20) for ri in r]
# 计算总和
sum_x = sum(x)
# 调整总和,使之等于150 × 48.6 = 7290
if sum_x < 7290:
# 随机选择一些数,将它们加上一个较小的值
idx = random.sample(range(150), 7290 - sum_x)
for i in idx:
x[i] += 1
elif sum_x > 7290:
# 随机选择一些数,将它们减去一个较小的值
idx = random.sample(range(150), sum_x - 7290)
for i in idx:
x[i] -= 1
# 乱序输出
random.shuffle(x)
print(x)
原文地址: https://www.cveoy.top/t/topic/lfc4 著作权归作者所有。请勿转载和采集!