2016-09-21 111 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]比較數組。

此外,作爲一個額外的(不是我的主要問題,所以如果它是不可能的我不在乎太多),你可以設置哪些元素可以重複,並且沒有在單臺發電機?或者也許是一個更好的隨機的,對於這個特定的情況?感謝您閱讀這裏。

編輯:沒有看到一個,對不起。

+4

「*我已經看到了以前的一些問題,但我不認爲它們適用於我的情況*」 =>所以你看到的建議,把號碼數組和洗牌?爲什麼它不適合你? – assylias

+0

其實我沒有完全理解你,你想要生成隨機唯一的密鑰? –

+0

@BasilBattikhi我想是的,我需要的發電機不重複的元素,但始終保持該發電機無功元素的號碼,我編輯的問題,我在相互作用範圍maked一個錯誤,我變得更加大了。 – 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)); 
    } 

它將不斷加入不同元件到interact直到它到達指定容量numberOfItems

+1

你應該刪除尾部;在while循環中 –

-1

修改您的for循環是這樣的:

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); 
}; 

您的隨機數字,如果它在一個列表 - 你又是隨機的,如果它不是 - 你將它添加到列表中,移動到接下來,非常簡單。