私は Android アプリを作成しており、乱数を生成したいと考えています。
しかし、Java の RandomGenerator は疑似乱数しか提供しません。数字は繰り返され、すべての数字がカバーされているわけではありません。
繰り返しのない数字を与え、すべての数字をカバーするものが欲しい. それ、どうやったら出来るの?
必要なすべてのランダムな値をリストに入れて、シャッフルすることができます。
List<Integer> numbers = ...
Collections.shuffle(numbers);
これにより、ランダムな順序で一意の番号が得られます。
ループしたい数値をデータ構造に入力してから、構造内の要素の順序をランダム化し、それらを 1 つずつ引き出すことができます。または、ランダムにインデックスを選択し、それらのインデックスで要素を取得することもできます。どちらを行うにしても (特定のデータ構造に対してより効率的なものを選択します)、この要素を取得するときに必ず削除してください。すべての要素を受け取り、何も残らないようになるまで、データ構造はどんどん小さくなっていきます。これにより、可能な数字のプールから削除されるため、同じ数字を 2 回ヒットすることはありません。