アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaのプログラミングについて質問させてください。
まだ勉強し始めの初級者です。

1~25までの乱数を発生させ
それらを重複させずに5列×5行に並べたいのですが、
Randomとfor文を使い乱数を発生させる事はできたのですが重複してしまいます。
ネットで調べたらArraylistのcontainsを使う等書いてあったのですが方法が分かりません。

5列×5行というのは
○、○、○、○、○、
○、○、○、○、○、
○、○、○、○、○、
○、○、○、○、○、
○、○、○、○、○、
という風に並べたいです。(○はすべて違う数字)

どなたか分かる方ご教授よろしくお願いします。

A 回答 (4件)

一旦配列に入れて、存在チェックしてからアウトプットするといいんじゃないですか?



(1)乱数作成
(2)配列に存在するかチェック
(3)存在しなければ配列に登録、存在すれば(1)に戻る
(4)アウトプット
(5)繰り返し
    • good
    • 0
この回答へのお礼

ベストアンサーは他の方にさせてもらったのですが、
すごい勉強になりました。
ありがとうございます!!

お礼日時:2014/08/11 02:01

Listに1~25の数値を格納しておいて


Collections.shuffleとかでシャッフルする。

No.1の存在チェックする方法は処理量が多くなるのでお勧めできない。
(でも、なんで良くないのか処理の流れ追って考えてみるのは面白いと思う。)
    • good
    • 0
この回答へのお礼

教えてくださいましてありがとうございます。
まだまだ勉強中ですので、また機会がありましたらよろしくお願いします!

お礼日時:2014/08/11 02:03

1. 1~25の25個の数字からランダムで1個取り出す。


2. 1.で取り出した数字を除いた24個の数字からランダムで1個取り出す。
3. 1. 2. で取り出した数字を除いた23個の数字からランダムで1個取り出す。
.
.
.
25. 最後の1個を取り出す。
26. 取り出した順に5個単位で分ける。
    • good
    • 0
この回答へのお礼

教えて頂きありがとうございます!
この方法でも自分で考えてやってみたいと思います!
ありがとうございました!

お礼日時:2014/08/11 02:05

簡単なのは #2 さんの方法で、


例えば、こんな感じでしょうか。
http://melpon.org/wandbox/permlink/ou1SnFSMRwu6B …
出力例:
shuffled: [12, 1, 22, 9, 17, 23, 20, 24, 2, 14, 11, 25, 6, 18, 5, 15, 4, 3, 10, 13, 21, 16, 19, 8, 7]
12 1 22 9 17
23 20 24 2 14
11 25 6 18 5
15 4 3 10 13
21 16 19 8 7
    • good
    • 0
この回答へのお礼

他のみなさんも丁寧に教えて頂けたのですが、
コードまで丁寧に教えて頂けたのでベストアンサーにしました。
すごい助かりました!!

ありがとうございました!

お礼日時:2014/08/11 02:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!