因此,我在给定网格上生成随机坐标,该网格包含 x 行和 y 列。假设我想在 8 x 6 网格上生成 25 个随机数。(8 列,6 行) 我写了一段这样的代码,它只是部分工作,因为该代码不排除重复项:
int intputRows =6;
int inputColumns=8;
Random randomNumGenerator = new Random();
for(int i=0;i<25;i++){
int randomRows = randomNumGenerator.nextInt(inputRows);
int randomColumns = randomNumGenerator.nextInt(inputColumns);
}
我的问题是,如何避免生成重复的数字?我知道有一些方法可以将它们放入 List
中结构和随机播放,但我可以用 Random
来完成吗?发电机?
最佳答案
只需使用集合
:
int intputRows =6;
int inputColumns=8;
HashSet<Integer> set = new HashSet<>();
Random randomNumGenerator = new Random();
int temp;
for(int i=0;i<25;i++){
temp = randomNumGenerator.nextInt(inputRows);
if(set.add(temp))
int randomRows = temp;
temp = randomNumGenerator.nextInt(inputRows);
if(set.add(temp))
int randomColumns = temp;
}
您仍然需要实现一个else
,以防它已经存在,但我只是给了您这个想法。
关于java - 在java中生成不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31774703/