我期待产生一个数列,每个数字都是70到100之间会有序列中X号,它会给和y的平均值。 将这种算法是什么样的?
Answer 1:
我认为这是不可能让他们在70和100之间均匀分布,并在同一时间给定的平均。
你可以做的是产生具有给定平均随机数,然后按比例将其完美融入[70,100](但他们不会均匀分布存在)。
生成随机数[0..1(
计算其平均
乘他们全部需要的平均匹配
如果它们中的任何不适合[70,100],再次缩放它们全部通过减少从它们的距离
y
由相同的因子(在此不改变平均)。x[i] = y + (x[i] - y)*scale
你将结束与该均在范围[70,100(号码,但它们将横跨于Y为中心的不同的(但重叠)间隔均匀分布。另外,该方法仅与真正/浮点工作数字。如果你想整数,你在你的手中有一个组合的问题。
Answer 2:
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
Answer 3:
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();
文章来源: Generate a random number sequence to get and average