2016-09-21 6 views
-1

私はより具体的には、私の最初のテキストアドベンチャーゲームのランダムな要素ジェネレータを作成してきた、この:乱数生成とアレイ

ここ
Random Generation = new Random(); 
    List<Integer> interact = new ArrayList<Integer>(); 
    for (int generator = Generation.nextInt(5) + 3; generator > 0; generator--) { 
     interact.add(Generation.nextInt(10)); 
    }; 
    System.out.println(interact); 

は、発電機は、元素の量を定義し、その相互作用し異なるインタラクティブなオブジェクトを表す乱数を含むリストは、私はいくつかの以前の質問を見たことがある要素を繰り返す必要がありますが、私は彼らが私のケースに少なくとも完全に適用されるとは思わない。

私はint a = Generation.nextInt(3); if (a != interact[]) {interact.add(a)} else {generator++};で考えていましたが、配列の比較には[any]を設定する方法がわかりません。

また、余分なものとして(私の主な質問ではないので、私はあまり気にしません)どの要素を1つのジェネレータで繰り返すことができますか?この特定のケースでは、より良いランダムなものでしょうか?ここまで読んでくれてありがとう。

編集:それは、ごめんなさい。

+4

"以前の質問はいくつか見たことがありますが、私のケース*" =>には当てはまらないと思いますので、数値を配列に入れてシャッフルするような提案を見たことがありますか?なぜそれはあなたのために働かないのですか? – assylias

+0

実際に私は完全にあなたを理解していない、あなたはランダムなユニークな鍵を生成したいですか? –

+0

@BasilBattikhi私はええ、私はジェネレータが繰り返し要素を必要としないが、ジェネレータの要素の数を常に維持する必要があると思う、私は質問を編集した、私は相互作用範囲でエラーを作り、私はそれをより大きくした。 – AnUnnoticedPotato

答えて

0

IIRC、あなたの要件は次のとおりです。

  • ゲームはサイズ3 <= numberOfItems <= 8の "要素一覧" を持っている必要があります。毎回numberOfItemsをランダム化する必要があります。
  • 「要素リスト」0とどのようにこの程度

10との間に正確にnumberOfItemsランダムな整数を含まなければなりませんか?

Random generator = new Random(); 
    Set<Integer> interact = new HashSet<Integer>(); 
    int numberOfItems = generator.nextInt(5) + 3; 
    while (interact.size() < numberOfItems) { 
     interact.add(generator.nextInt(10)); 
    } 

それは指定された容量numberOfItemsに達するまでinteractに明確な要素を追加していきます。

+1

末尾を削除する必要があります。 whileループ –

-1

ループのために、このようあなたを変更します。

for (int generator = Generation.nextInt(5) + 3; generator > 0; generator--) { 
     int randomedNumber = 0; 
     do { 
      randomedNumber = Generation.nextInt(10); 
     } while(interact.contains(randomedNumber)) 
     interact.add(randomedNumber); 
}; 

をあなたの乱数、それはリストの中だ場合 - あなたはランダムに再びそれがない場合は、 - あなたはそれをリストに追加し、に移動次に、かなり簡単。