乱数

2010-12-08 6 views
3

質問があります: Java(android)で0から4までの数字をどのように描画しますか? ランダム機能の使い方は?乱数

答えて

8

あなたが必要とするのは以下の通りです。

Random r = new Random(); 
int randomInt = r.nextInt(5); 

あなたがループ内でこれを行う場合は、必ずループのRandom外を初期化します。

Random r = new Random(); 
for(int i = 0;i < someThing; i++) { 
    System.out.println(r.nextInt(5)); 
} 

Randomクラスのドキュメントを参照してくださいするように注意するhttp://download.oracle.com/javase/6/docs/api/java/util/Random.html

2

ことの一つは、あなたが新しいランダムなオブジェクトに新しい番号をするたびに作成するべきではないということです。アプリケーションの起動時にこの行を一度に実行する必要があります。

Random r = new Random(); 

その後、これはあなたが新しい乱数たいたびに呼び出されなければなりません:あなたは一つだけを生成する必要がある場合

int x = r.nextInt(5); 
2
System.out.println(""+(int) (Math.random()*5.0)); 

を乱数を使うと、Math.random()をオブジェクトを作るよりも少し安いと思います。

注:(0含め、nは除く)、nは0から任意のランダムな整数を生成するために、使用直前:

(int) (Math.random()*n); 

は、m + nは、(包括Mまで、Mからの任意の整数の乱数を生成するために、 m + nは排他的)だけを使用します。

m + (int) (Math.random()*n); 
+0

ランダムのインスタンスを作成することは、あなたの方法よりも高価である必要はありません – ognian

+0

Ognianは正しいです。明確にするために、Math.random()への最初の呼び出しは、実際にはすべてjava.util.Randomオブジェクトを作成しますその後のMath.random()の呼び出し。 –

+0

おかげで、ありがとう – nnythm

2

Attantionをお支払いください - コードたびに呼び出す:

Random r = new Random(); 

はおそらく、rはウィルあなたには同じ数字が書かれています(あなたの中にはファナモナが気付いた人はほとんどいません)。

私はそれが乱数とJavaの問題に何らかの形で接続されていると思います。とにかく、私の解決策は、私のクラスに静的変数を追加することですJava random always returns the same number when I set the seed?

static Random sRandomGen = new Random(); 

と呼ん Java: Can (new Random()).nextInt(5) always return the same number? と私は乱数が必要な場合、関連するメソッドからnextInt。 Thatway私は結果の間で等分を受け取ります。

int rnd = sRandomGen.nextInt(numofmatches - 1); 

この解決策は私にはうってつけです。