将2个随机数加载到一个没有重复的数组中

时间:2016-12-08 03:27:18

标签: arrays eclipse random duplicates 2d

我想从0-5(Row,Col)生成随机坐标,没有使用for循环的任何重复。基本上,如果生成数字(3,2),(3,4),(1,4),(3,4),那么将不使用(3,4)并且将寻找新的随机集。 / p>

这些是生成两个随机数并将它们加载到数组shootP []

中的方法
    int[] shootP = new int[2];

public static int shootRowP(int[] shootP)
{
    Random rn = new Random();
    shootP[0] = rn.nextInt(5)+1;//loads into ROW
    System.out.print("Row:"+(shootP[0]));
    return shootP[0]--;
}

public static int shootColP(int[] shootP,int[][]boardP)
{
    Random rn = new Random();
    shootP[1] = rn.nextInt(5)+1;//loads into Col
    System.out.print(" Column:"+(shootP[1])+"/n");
    return shootP[1]--;
}

然后我想在shootP [0]和shootP [1]的值中读取另一个方法,并检查这些值是否已被使用。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

由于可能坐标(X,Y)的数量不是太大,首先要建立所有可能坐标的列表。然后,在每个随机选择中,选择此列表中的随机元素(即rn.nextInt(current_list_length)),从列表中删除该元素并将其返回。

注意:

  • 当列表为空时,您必须执行某些操作(例外?)
  • 您还可以在初始化和每次抽奖时随机播放列表,选择并删除第一个(或最后一个)元素。例如,请参阅here如何改组数组。
  • 而不是列表,堆栈(数组+元素计数器)可以做到这一点。