2017-08-07 11 views
-4

最大リストが私のリストから1つの長さの場合、重複しないランダムな整数を作成したいと思います。Androidスタジオの乱数は公開されていません

私はこのコードを使用しますが、重複しています。私は何を変えるべきですか?

Random rand = new Random(); 
n = rand.nextInt(QuestionLibrary.mChoices.length) + 1; 
+0

リストに 'N'を追加する前に、確認してください。そうであれば、新しい 'n'を生成します。 – csmckelvey

+1

この質問は毎週少なくとも何回か聞かれます。検索はかなり早く答えを出すでしょう。 – Carcigenicate

答えて

0

以下の解決策は、各乱数がまだ選択されていないことを確認するよりも効率的です。

考えられるのは、ランダムな範囲内のすべての可能な数字をリストに入れることです。次に、リストをシャッフルします。その後、シャッフルされたリストの先頭から項目をポップすることによって、それぞれ新しい乱数を取得します。リストには 'N'が含まれている場合

Generating Unique Random Numbers in Java

+0

これを私のプロジェクトにどのように使用できますか? – MariosGR

+0

可能なすべての乱数を新しいリストに追加します。あなたの場合、mChoicesの長さ。次に、既存のJavaメソッドを使用してリストの順序をシャッフルします。今度はリストを反復することができ、現在のインデックスで引っ張る各数値は、あなたの範囲内の一意の乱数になります。 – Stuckzilla

+0

このintは私の写真と質問とanwsersを私のゲームで変えます。いくつか簡単な方法がありますか? – MariosGR

関連する問題