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