2

256 の整数を保持する必要があり、整数の値が 0 ~ 512 の間のどこかにある Java でランダムな整数の配列を生成するコードを書きたい (0 ~ 256 または 0 ~ 1024 である可能性があるが、0 ~ 100 万のものではない) .. ) . ただし、このコードを実行するたびに、同じランダム化された配列を取得する必要があります。

これは私が持っているものです:

int k = 256;

for(int t=0;t<k;t++){
    Random rn = new Random(t);
    int randomNumber = rn.nextInt();
    arrayToBeSorted[t] = randomNumber;
}

ただし、これにより次のような値が得られます。

-1155484576 -1155869325 -1154715079 -1155099828 -1157023572

私はまったく好きではありません。

したがって、コードを次のように変更します: ( k*2 をパラメーターとして nextInt メソッドに追加します)

for(int t=0;t<k;t++){
    Random rn = new Random(t);
    int randomNumber = rn.nextInt(k*2);
    arrayToBeSorted[t] = randomNumber;
}

そして今、これは私が得るものです:

374 374 374 374 374 374 374 374 373 373 373 373 373 373 373 373 374 374 375 375 374 374 374 374 374 374 374 374 374 374 374 374 372 372 372 372 372 372 372 372 372 372 372 372 372 372 372 372 373 373 373 373 373 373 373 373 373 373 373 373 372 372 373 373 371 371 371 371 371 371 371 371 370 370 371 370 370 370 370 370 372 372 372 372 371 371 371 371 371 371 371 371 371 371 371 371 369 369 369 369 369 369 369 369 369 369 369 369 369 369 369 369 370 370 370 370 370 370 370 370 370 370 370 370 370 369 370 370 380 380 380 380 379 379 380 379 379 379 379 379 379 379 379 379 380 380 380 380 380 380 380 380 380 380 380 380 380 380 380 380 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 379 379 379 379 379 379 379 379 379 378 379 379 378 378 378 378 377 377 377 377 377 376 377 377 376 376 376 376 376 376 376 376 377 377 378 377 377 377 377 377 377 377 377 377 377 377 377 377 375 375 375 375 375 375 375 375 375 375 375 375 375 375 375 375 376 376 376 376 376 376 376 376 376 376 376 376 375 375 375 375

これについて私が気に入らないのは、繰り返される多くの値が存在することです。それで、私は何をすべきですか?

*注: これも実際には 10 回必要です。そう;

  1. 私のコードでは、これらすべての上に、0 から 9 までカウントする別のカウンターがあります。たとえば、int = c;とします。
  2. これら 10 個の配列すべてを 0 から 1024 (最大) の範囲でランダム化する必要があります。

ありがとうございました。

4

1 に答える 1

6

次のようなことができます。

int k = 256;
Random rn = new Random(seed); // use a single Random object, you choose a seed
                              // to get the same sequence, use the same seed

for (int t = 0; t < k; t++) {
    // Random rn = new Random(t); // commented out from your original code
                                  // you only need one Random object
    int randomNumber = rn.nextInt(256); // 256, or whatever you want the max
                                        // value to be
    arrayToBeSorted[t] = randomNumber;
}

注:実際にはこれを10回行う必要があります

次に、次のように、同じオブジェクトforを使用してループを 10 回繰り返します。Random

int k = 256;
Random rn = new Random(seed);

for (int c = 0; c < 10; c++) {
    for (int t = 0; t < k; t++) {
        int randomNumber = rn.nextInt(256);
        someArrayOfTenArrays[c][t] = randomNumber;
    }
}
于 2013-05-11T20:25:02.713 に答える