ホームページ > Java > &#&チュートリアル > Java で非反復乱数を生成するにはどうすればよいですか?

Java で非反復乱数を生成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-09 10:01:02
オリジナル
777 人が閲覧しました

How Can I Generate Non-Repeating Random Numbers in Java?

非反復乱数を生成する Java アプローチ

Java で一意の乱数のセットを作成するのは難しい場合があります。配列に 0 ~ 9999 の非繰り返し整数 10,000 個を設定する必要がある次のシナリオを考えてみましょう。

次のコード スニペットは、Java の組み込み Random クラスを使用してこの問題に対処しようとしています。

import java.util.Random;
public class Sort {
    public static void main(String[] args) {
        int[] nums = new int[10000];

        Random randomGenerator = new Random();

        for (int i = 0; i < nums.length; ++i) {
            nums[i] = randomGenerator.nextInt(10000);
        }
    }
}
ログイン後にコピー

ただし、モジュロ演算を使用して乱数を目的の範囲にマップする場合、このコードは衝突の可能性があるため、重複した数値を生成する可能性があります。一意の数値を確保するために、Java の Collections クラスを利用できます。

Java Collections.shuffle() を使用した解決策

Java で非反復乱数を生成するための推奨アプローチCollections.shuffle() メソッドを利用することです。その仕組みは次のとおりです。

  1. 数値の配列 (Integer[] arr) を作成します。
  2. Collections.shuffle(Arrays.asList(arr)) を使用して要素の順序をランダム化します。
  3. シャッフル処理により、ランダム化された配列には一意の数値が含まれています。

たとえば、次のコード スニペットはこのメソッドを示しています。

public static void main(String[] args) {
    Integer[] arr = new Integer[1000];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = i;
    }
    Collections.shuffle(Arrays.asList(arr));
    System.out.println(Arrays.toString(arr));
}
ログイン後にコピー

このアプローチでは、配列内の各数値が一意であることが保証され、非反復乱数を生成するという要件が満たされます。

以上がJava で非反復乱数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート