java - 在java中生成不重复的随机数

标签 java

因此,我在给定网格上生成随机坐标,该网格包含 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/

相关文章:

java - 如何禁用 Ajax 缓存?

java - 如何通过匹配 userType 和 android 中的验证状态来获取列表?

java - 复选框中的 If 语句被忽略

java - 跨平台收集当前服务器信息

java - 正则表达式查找具有唯一数字的数字

java - Lambda 表达式在看似相同的 kotlin 中不起作用

java - 为什么 Java 使用堆来分配内存?

java - 无法在IntelliJ中调试Spock测试

java - 尝试将 Java 字符串中的每个单词大写

java - 带 NavigationDrawer 的 SlidingTabLayout