2016-04-23 8 views
1

初期化の一部として乱数を使用するオブジェクトのインスタンスをたくさん作成したいのですが、ループ内でこれらのオブジェクトを大量に作成すると、それらのほとんどが同じになると思います。誰かが明確にすることはできますか?私が前提にしていれば、ランダムなオブジェクトを1つ共有する方法はありますか?オブジェクトのインスタンス間でランダムな共有?

+0

:たとえば

。同じオブジェクトからでも重複したランダムを得る確率があります。 – Priyamal

+0

あなたの乱数の範囲とあなたの乱数発生器の品質(期間の長さ)に依存します。 –

+0

質問はちょっとあいまいですが、一般的に、コードは* same * Randomインスタンスを使用する必要があります。インスタンスは、どのオブジェクトも共有されるのと同じ方法で共有できます。 – user2864740

答えて

2

オブジェクトは1つのjava.util.Randomインスタンスを共有できます。実際、毎回Randomの新しいインスタンスを作成するのではなく、これにより最高のパフォーマンスが得られます。

java.util.Randomがスレッドセーフな場合でも、複数のスレッドを扱う場合は、スレッドの競合を大幅に削減するため、JDK 1.7で導入されたThreadLocalRandomを使用することを検討する必要があります。同じランダムオブジェクト文句を言わないのヘルプを共有

public class ExampleClass { 
    private static final Random random = new Random(); 

    public ExampleClass() { 
     System.out.println("Constructor using random: " + random.nextInt(100)); 
    } 

    public void methodThatUsesRandom() { 
     System.out.println("Method using random: " + random.nextInt(100)); 
    } 
} 
+0

ありがとう!ちょうど私が求めたもの!そして私はこれをどのように達成するのでしょうか? – Scy

+0

これについてはいくつかの方法があります。 1つの方法は、あなたのクラスに '' static final''インスタンスを定義し、それをメソッドで使用することです。上記の私の記事を参考にしてください。 – ck1

関連する問題