从一组数字中生成3个唯一数字

时间:2013-04-02 15:26:58

标签: java random

我正在开发一个项目,它使游戏板的三个空格与其余部分不同(+ 1,+ 2,-1)我需要将这些值添加到存储在ArrayList索引处的变量中。 我可以找到一些东西来生成索引的数量,但我不知道如何确保它们是唯一的索引。 (它不能将所有三个值都放在一个空格中)

如何在0到16范围内制作三个独特的随机索引?

谢谢!

2 个答案:

答案 0 :(得分:2)

将所有可能的数字放在一个列表中 - 将它们洗牌并取前三个:

public class Test {
  public void test() {
    System.out.println("Hello");
    List<Integer> numbers = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16));
    Collections.shuffle(numbers);
    System.out.println(numbers);
  }

  public static void main(String args[]) {
    new Test().test();
  }
}

印刷

[5, 12, 4, 7, 2, 11, 14, 9, 3, 0, 15, 8, 1, 10, 13, 16, 6]

答案 1 :(得分:1)

尝试此操作以从给定数字列表中生成唯一的随机数。

  1. 生成所有可能值的列表。
  2. 使用集合Collections.shuffle(list);
  3. 中的shuffle方法对其进行随机播放
  4. 通过在每个步骤中迭代来获取项目。