• 締切済み

ランダム関数を使って

ランダム関数を使って数字を表示させることはできるのですが、 一度表示されたものを再び表示しないようにしたいのですが、 なにかいい方法がありましたら、教えてください。

みんなの回答

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

あらかじめ数を準備しておいてシャッフルするやり方は提示されているので、他のやり方を・・・ Setを用意して表示した乱数をSetにaddしていく方法です。 乱数を発生させ、Setに含まれていれば表示、いなければ新たな乱数を発生させる。 要はすでに表示した乱数を保持しておいて、乱数を発生させるたびに判定していく方法です。

回答No.2

あらかじめ表示させたい数字の範囲がわかっているのなら java.util.Collectionsクラスのshuffleメソッド を使ってみるのもいいかもしれませんね。

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

Javaという枠にとらわれないで回答します。 僕が良く使う手はこんなのです。 まず、ランダムの範囲を決めます。 今回は1~100としますね。 これを配列に格納します。 rndtbl[0] = 1; rndtbl[1] = 2; rndtbl[2] = 3;  :  : で、ランダムのメソッドで乱数を取得します。 この取得する値の範囲は0から配列の最大値、すなわち99までです。 取得した乱数を添え字に先ほどの配列から値を取得しこれを本当の乱数とします。 次に取得した配列の添え字以降を詰めます。 例えば50番目だったら51番目を50番目に、52番目を51番目に、と。 そしてまたランダムのメソッドで乱数を取得する処理に戻ります。 但し次は配列の数が減っているので求める範囲は0~98までです。 という風に繰り返していけば重複することはありません。 ちょっと説明がヘタで申し訳ないですが、参考になれば。

関連するQ&A

専門家に質問してみよう