2011-07-19 4 views
7

1〜20の乱数を作り、その数に基づいて(If-Then文を使用)、ImageViewの画像を設定する必要があります。Androidで作業するときのJavaの乱数

私は、Objective-Cで、それはこのように書きますことを知っている:

int aNumber = arc4Random() % 20; 
if (aNumber == 1) { 
    [theImageView setImage:theImage]; 
} 

私はJavaでこれを行うことができますどのように?私はそれをこのように見ましたが、どのようにして数字の範囲(1-20,2-7、など)を設定できるか分かりません。

int aNumber = (int) Math.random() 

答えて

29

Docs are your friends

Random rand = new Random(); 
int n = rand.nextInt(20); // Gives n such that 0 <= n < 20 

ドキュメント

このランダムから引き出され、(含む)0と指定された値(排他的)との間に均一に分布int値、擬似乱数を返します番号ジェネレータのシーケンス。 したがって、この例から、我々は、0と19

+0

ありがとうございます。私はドキュメントを読もうとしましたが、そのウェブサイトで正直に迷っています。私はプログラミングをすることができる人の一人だと思いますが、思考の笑はありません。 – Justin

+2

はもっと短くてもかまいません。 'int n = new Random()。nextInt(20);' –

+0

何ですか?種なし?簡潔さは正しさを誇張することはできません。 – duffymo

5

Math.random()間の数[0,1【からdoubleを返す必要があります。 Random.nextInt(int)は、[0、int []からintを返します。

+0

@truthealityあなたは私を捕まえました:Pどうにかintは0と1の間にありますか? ^^ – Jeffrey

4

あなたは試すことができます:

int aNumber = (int) (20 * Math.random()) + 1; 

または

Random rand = new Random(); 
int n = rand.nextInt(20) + 1; 
+0

これは私が望むように見えますが、@ truthealityの回答はすでに投票権を持っています。この答えについて何か良いことはありますか? – Justin

+0

両方を行うことができます。しかし、0(含まれている)から20(除外されている)から開始するため、1から開始したい場合は1を追加する必要があることに注意してください。 – user802421

+0

'Math.random'はオブジェクトをインスタンス化せず、' new Random() 'はオブジェクトをインスタンス化しません。 – AlbeyAmakiir

0

をあなたは0と1の非包括間に二重を生成するために、Math.random()を使用することができます。 Android Javadoc here

-3
Random r = new Random(); 
int number = r.nextInt(100) + 1; 
+3

あなたの質問を編集し、これが正しい理由を説明できますか? – rjdkolb

関連する問題