生成平均值为 2780、范围在 1940 到 4400 之间的 78 个随机数
这是一个数学问题,可以使用线性代数的方法解决。
首先,我们可以设这 78 个数的和为 S,那么根据平均值的定义,有:
S / 78 = 2780
解得:
S = 216840
接下来,我们考虑如何生成这 78 个数。我们可以将它们表示为:
x1, x2, x3, ..., x78
根据题意,这些数的范围在 1940 至 4400 之间,因此我们可以将它们表示为:
xi = 1940 + yi * (4400 - 1940) / 77
其中,yi 是一个整数,表示第 i 个数相对于 1940 的偏移量。这样,我们就可以将问题转化为求解 yi。
根据上面的式子,我们可以得到:
yi = (xi - 1940) * 77 / (4400 - 1940)
将它们代入 S 的表达式中,得到:
S = 1940 * 78 + 77 * (y1 + y2 + y3 + ... + y78)
因此,我们只需要生成 78 个整数 y1, y2, y3, ..., y78,使得它们的和为:
(y1 + y2 + y3 + ... + y78) = (S - 1940 * 78) / 77
然后,根据上面的式子,我们就可以求出对应的 xi 了。
最后,我们可以使用随机数生成器来生成这 78 个整数,保证它们的和为上面的值即可。生成的数可以乱序排列。
下面是 Python 代码实现:
import random
# 生成 78 个数,范围在 1940 至 4400 之间,且平均值为 2780
S = 216840
y_sum = (S - 1940 * 78) // 77
nums = []
for i in range(78):
y = random.randint(0, y_sum)
nums.append(1940 + y * (4400 - 1940) // 77)
y_sum -= y
# 乱序排列
random.shuffle(nums)
print(nums)
原文地址: https://www.cveoy.top/t/topic/lfcL 著作权归作者所有。请勿转载和采集!