2016-09-21 115 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); 
}; 

您的随机数字,如果它在一个列表 - 你又是随机的,如果它不是 - 你将它添加到列表中,移动到接下来,非常简单。