-3

重複の可能性:
Java で一意の乱数を生成する

1 から 49 までの 6 つの数字のセットを生成する Android 用の宝くじアプリを作成しています。私が抱えている問題は、これらの数字を一意にする方法です。

Random r = new Random();
int n1=r.nextInt(48) + 1;
ball1.setText(String.valueOf(n1));
int n2=r.nextInt(48) + 1;
ball2.setText(String.valueOf(n2));
int n3=r.nextInt(48) + 1;
ball3.setText(String.valueOf(n3));
int n4=r.nextInt(48) + 1;
ball4.setText(String.valueOf(n4));
int n5=r.nextInt(48) + 1;
ball5.setText(String.valueOf(n5));
int n6=r.nextInt(48) + 1;
ball6.setText(String.valueOf(n6));
4

2 に答える 2

6

これは古典的なタスクです。[1..49] 値の配列を取得し、6 つのランダム順列を生成してから、順列配列の最初の 6 つの項目を取得します。

これは、シャッフル (フィッシャー・イェーツ シャッフル) と呼ばれます。

于 2012-05-20T23:38:41.050 に答える
0

これは非常に簡単な解決策です。新しい数値を作成する for ループを作成し、それが作成する最初の数値である場合は、それを一時配列に追加します。次に、新しい数値を生成するたびに、既存の数値の配列を確認し、一意でない場合は、for ループのカウンターに 1 を追加します。

これは、すべての一意の番号が取得されるまで続きます。それが理にかなっていることを願っています。

于 2012-05-20T23:38:08.647 に答える