3
我有一个N
对象的列表。
我想插入X
虚拟物体,这些虚拟物体随机放置在真实的物体之间,间隔在(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
结束。
什么是更好的方法来做到这一点?
在我看来,如果'randomStep'不是=='N',那么得到的随机数将不会均匀分布到'N'。 – 2012-03-10 12:47:54
我认为你应该做'random.nextInt(randomStep)+ 1',否则如果结果为零,你会得到两个或多个实际上是同一个的虚拟索引。 – Yoni 2012-03-10 12:48:10
而且,当然,请注意,如果您想要获取'N'的值,则需要为'nextInt'指定'N + 1'。 – 2012-03-10 12:50:30