我正在寻找一个数字序列,其中每个数字都在 70 到 100 之间,序列中会有 x 个数字,它将给出 y 的平均值。这个算法会是什么样子?
问问题
2282 次
3 回答
2
我认为它们不可能均匀分布在 70 到 100 之间并且同时具有给定的平均值。
您可以做的是生成具有给定平均值的随机数,然后将它们缩放以适合 [70, 100](但它们不会在那里均匀分布)。
生成随机数 [0..1(
计算他们的平均值
将它们全部相乘以匹配所需的平均值
如果它们中的任何一个不适合 [70, 100],则通过将它们的距离减小
y
相同的因子来再次缩放它们(这不会改变平均值)。x[i] = y + (x[i] - y)*scale
您最终将得到所有在 [70, 100( 范围内的数字,但它们将均匀分布在以 y 为中心的不同(但重叠)区间内。此外,这种方法仅适用于实数/浮点数数字。如果你想要整数,你手上就有一个组合问题。
于 2012-06-22T01:35:09.000 回答
0
Python 示例
import random
import time
x = 10
total = 0
avg = 0
random.seed(time.time())
for x in range(10):
total += random.randint(70,100)
avg = total /x
print "total: ", total
print "avg: ", avg
于 2012-06-22T01:30:08.307 回答
0
Random r = new Random();
List<int> l = new List<int>();
Console.Write("Please enter amount of randoms ");
int num = (int)Console.Read();
for (int i = 0; i < num; i++)
{
l.Add(r.Next(0, 30) + 70);
}
//calculate avg
int sum = 0;
foreach (int i in l)
{
sum += i;
}
Console.Write("The average of " + num + " random numbers is " + (sum / num));
//to stop the program from closing automatically
Console.ReadKey();
于 2012-06-22T01:39:51.870 回答