一意の数値を生成するランダム整数ジェネレーターを作成しようとしています。
誰もそれがどのように可能か考えていますか?
可能な数値の範囲が十分に小さい場合、これは非常に簡単で便利です。
final List<Integer> sack = new ArrayList<>(RANGE);
for (int i = 0; i < RANGE; i++) sack.add(i);
Collections.shuffle(sack);
次に、アイテムsack
を順番に取り出します。
探しているものがグローバルに一意の識別子である場合は、世界中で一度だけ作成される ID を生成する Java の UUID クラスを検討することをお勧めします。
import java.util.UUID;
public class Test {
public static void main(String[] args) {
System.out.println(UUID.randomUUID());
}
}
ただし、整数ではなく英数字です
1 つの単純なアルゴリズムは次のようになります。
HashSet<Integer> set
set
=> その乱数を使用して格納しますset
set
、手順 2 に戻ります一意性制約のため、数字は完全にランダムではないことに注意してください。