2012-03-10 7 views
3

私はNというオブジェクトのリストを持っています。
実際のNオブジェクトの間に(0、N)の間にランダムに配置されたXダミーオブジェクトを挿入したいと思います。一様分布の乱数セットの作成

私は次のコードを試しました。

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の最後に良好な分布が届かないが、これは、大丈夫動作します。

これを行うにはどのような方法が良いですか?

+0

もし 'randomStep'が==' N'でなければ、結果の乱数は 'N'まで均等に分配されないようです。 –

+0

'random.nextInt(randomStep)+ 1'を実行しなければならないと思います。そうでなければ、結果がゼロなら2つ以上のダミーインデックスが得られます。 – Yoni

+0

そしてもちろん、 'N'の値を取得したい場合は、' nextInt'に 'N + 1'を指定する必要があります。 –

答えて

1

このされます。これは、トリックを行う(しかし、それは、新しい最大値はN-1になり、Nには何も置かれることに注意する各N/X

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

間の1つのランダムな値を持っていることを確認します)

関連する問題