そのため、乱数ジェネレーターがあり、1 とユーザーが最大値として入力した値の間で 10 個の数値を生成します。うまくいきましたが、重複した番号を生成しないようにしたいです。したがって、5 が生成された場合、他の数字は 5 になることはありません。
5 に答える
3
棄却サンプリングを試すことができます。空のセットから始めます。番号を生成します。セット内にある場合は、再試行してください。つまり、セットにない数字が見つかるまで選び続けます。新しい番号を見つけたら、それをセットに追加してからユーザーに返します。
もちろん、大量の数値が生成された場合、たとえば k で上限が n の場合、新しい数値を取得する時間は幾何分布 (成功確率 (nk)/n) に従うため、期待されるサンプリング数は一意の番号が n/(nk) であることがわかる前に必要です。
于 2013-04-28T06:21:54.653 に答える
3
最大値が小さい場合は、一意の値のリストである Collection.shuffle() を使用できます。この中から 10 個の要素を選択できます。
于 2013-04-28T06:34:00.677 に答える