创建一组均匀分布的随机数

时间:2012-03-10 12:43:31

标签: java random

我有一个N个对象列表 我想插入X虚拟对象,这些对象随机放置在真实N对象之间,间隔在(0,N)之间。

所以我尝试了以下代码。

int[] dummyIndexes = new int[X];
int randomStep = N/X * 2; // *2 because the Mean is N/X/2

Random random = new Random();
int randIdx = 0;

for (int i=0; i < X; i++)
{ 
   randIdx += random.nextInt(randomStep);
   dummyIndexes[i] = randIdx;
}

这样做没问题,虽然我没有得到一个好的分发到域N的末尾。

有什么更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

这将确保每个N / X之间有一个随机值

 randIdx = N * i / X + random.nextInt(N / X) + 1;

答案 1 :(得分:0)

这样做会有所帮助(但请注意,它会更新在N处放置任何东西,最大值将是N-1)

    int[] dummyIndexes = new int[X];
    int randomStep = N/X;
    Random random = new Random();
    int randIdx = 0;
    for (int i=0; i < X; i++)
    { 
       randIdx = randomStep * i  + random.nextInt(randomStep);
       dummyIndexes[i] = randIdx;
    }