产生一个随机数序列来获得和平均(Generate a random number sequence

2019-07-30 01:27发布

我期待产生一个数列,每个数字都是70到100之间会有序列中X号,它会给和y的平均值。 将这种算法是什么样的?

Answer 1:

我认为这是不可能让他们在70和100之间均匀分布,并在同一时间给定的平均。

你可以做的是产生具有给定平均随机数,然后按比例将其完美融入[70,100](但他们不会均匀分布存在)。

  1. 生成随机数[0..1(

  2. 计算其平均

  3. 乘他们全部需要的平均匹配

  4. 如果它们中的任何不适合[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