Java:生成N个随机数,意思是M

时间:2015-04-19 10:41:30

标签: java random

我没有设法在Math.random或Util.random中找到这样的函数。例如,我给出2的平均值并生成N个随机数,当我将它们平均为平均值时,我给函数提供了数字(在本例中为2)。

public static int[] randomNumbersWithGivenMean(int average)
{
  ...
}

2 个答案:

答案 0 :(得分:3)

通常,如果您生成1..N范围内的随机数列表,则列表项的平均值将为N / 2。列表越大,这就越有可能成立。

public static int[] getRandomList(int average, int listSize) {
    Random rand = new Random();
    int[] list = new int[listSize];

    for(int i = 0; i < listSize; i++) {
        list[i] = rand.nextInt(average * 2) + 1;
    }

    return list;
}

你没有提到你想要产生的数字范围,所以我假设1..N就足够了。如果您希望更改此设置,则必须确保在average上均匀生成数字。

答案 1 :(得分:3)

您在寻找高斯分布随机数吗?

请参阅JavaDoc for Class Random

有一种名为nextGaussian()的方法,如文档中所述:

  

返回下一个伪随机,高斯(&#34;正常&#34;)分布式双精度值,其平均值为0.0,标准偏差为1.0。此随机数生成器的序列。

然后你必须改变结果以符合你想要的标准偏差(通过乘法)和平均值(通过加法)。

您拨打nextGaussian()的次数越多,越好(数字意味着更接近所需的平均值)。