Java 唯一随机生成整数的数组

2023-12-07

public static int[] uniqueRandomElements (int size) {

    int[] a = new int[size];

    for (int i = 0; i < size; i++) {
        a[i] = (int)(Math.random()*10);

        for (int j = 0; j < i; j++) {
            if (a[i] == a[j]) {
                a[j] = (int)(Math.random()*10);
            }
        }   
    }

    for (int i = 0; i < a.length; i++) {
        System.out.print(a[i]+" ");
    }
    System.out.println();
    return a;
}

我上面有一个方法,它应该生成用户指定的随机元素数组。随机生成的整数应在 0 到 10 之间(含 0 和 10)。我能够生成随机整数,但我遇到的问题是检查唯一性。我尝试检查唯一性在上面的代码中,但数组仍然包含整数的重复项。我做错了什么,有人可以给我提示吗?


for (int i = 0; i < size; i++) {
    a[i] = (int)(Math.random()*10);

    for (int j = 0; j < i; j++) {
        if (a[i] == a[j]) {
            a[j] = (int)(Math.random()*10); //What's this! Another random number!
        }
    }   
}

您确实找到了重复值。但是,您可以将其替换为另一个可能重复的随机数。相反,试试这个:

for (int i = 0; i < size; i++) {
    a[i] = (int)(Math.random()*10);//note, this generates numbers from [0,9]

    for (int j = 0; j < i; j++) {
        if (a[i] == a[j]) {
            i--; //if a[i] is a duplicate of a[j], then run the outer loop on i again
            break;
        }
    }  
}

然而,这种方法效率低下。我建议列出一个数字列表,然后将其随机化:

ArrayList<Integer> a = new ArrayList<>(11);
for (int i = 0; i <= 10; i++){ //to generate from 0-10 inclusive. 
                               //For 0-9 inclusive, remove the = on the <=
    a.add(i);
}
Collections.shuffle(a);
a = a.sublist(0,4);
//turn into array

或者你可以这样做:

ArrayList<Integer> list = new ArrayList<>(11);
for (int i = 0; i <= 10; i++){
    list.add(i);
}
int[] a = new int[size];
for (int count = 0; count < size; count++){
    a[count] = list.remove((int)(Math.random() * list.size()));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 唯一随机生成整数的数组 的相关文章

随机推荐

  • 无法在 Heroku 中查看 Express/React 应用程序(同时未找到)

    我在 Heroku 中查看我的 Node Express React 项目时遇到问题 成功将我的项目推送到 Heroku 后 当我尝试在 Heroku 中查看我的应用程序时 出现 404 错误页面 Heroku 日志显示concurrent
  • 如何使用 CasperJS 移动 jquery-ui 滑块

    有什么办法可以移动jQuery UI 滑块 with CasperJS 我也发现了这个github问题在寻找一种可能性时 只需单击滑块的左侧或右侧即可移动handle 但这对我来说也不起作用 任何想法 移动滑块的工作原理如下 casper
  • 在 Firefox 中检查元素标尺

    我想知道是否有任何方法可以在 Firefox 中查看标尺 就像 Chrome 检查元素标尺一样 Chrome 显示您当前的宽度 即 宽度 填充 标尺悬停时的当前宽度 see below Chrome screenshot for ref 它
  • Android 未知命令“紧缩”

    我刚刚在 Mac OS X 中安装了 Eclipse 和 Android SDK 我将项目导入到 Eclipse 但在运行项目时出现未知命令 crunch 错误 我应该如何解决这个问题 请帮我 我刚刚更新 Android SDK Platf
  • 如何让图表填满整个窗口

    我正在使用 QtDesigner 创建的应用程序中绘制图形 问题是 当显示图形时 图形空间和 mplwidget 空间之间会出现一个大的 灰色边缘 这使得绘图变小 那么我如何删除在主窗口中显示图形时出现的这个大 灰色边框 I would l
  • Amazon SES 使用 java 从 S3ObjectInputStream 对象读取存储在 s3 存储桶中的电子邮件

    我已经配置了我的AWS SES将所有传入电子邮件存储到对象键前缀为电子邮件的 S3 存储桶 我有一个 Java 应用程序 我正在尝试读取该存储桶中的所有对象 然后将它们移动到另一个存储桶中 以便只有未读的电子邮件保留在存储桶中 我使用以下代
  • 如何下载wordpress源码?

    我用他们的模板创建了一个 WordPress 网站 为了在另一个托管平台上托管我的 WordPress 网站 我需要我的 wordpress com 网站的源代码 包含所有 php 文件 有没有简单的方法可以做到这一点 这是我第一次使用 w
  • Windows Server 2019 Docker docker.exe:守护程序的错误响应:无法启动服务实用程序 VM(createreadwrite):

    我在 VMWare 中创建了 Windows Server 2019 VM 我尝试在那里运行 docker 容器 Ubuntu 但出现此错误 docker exe 来自守护程序的错误响应 无法启动服务 实用虚拟机 创建读写 我已经做了什么
  • 如何在 UIImage 上快速绘制/涂鸦线?

    我需要在 UIImage 中绘制 涂鸦一条线 如上图所示 我看到很多教程在 UIView 上涂鸦线 但不在 UIImage 中 用户在图像上涂鸦后 我想将其保存为新图像 有线条的图像 我该如何在 Swift 中做到这一点 我只能在 UIVi
  • Python 用多个分隔符分割字符串并查找使用的分隔符

    如何使用多个分隔符分割字符串 并找出使用哪个分隔符分割 maxsplit 为 1 的字符串 import re string someText someValue re split string 1 returns someText som
  • 运行时错误 - 无法访问文件

    我有以下 VBA 脚本 它可以保存工作簿 并且效果很好 但是 如果再次单击 commandbutton1 它会正确显示选项框 您要替换该文件吗 是 否 取消 是 选项工作正常 但 否 和 取消 选项会弹出错误框 RunTime error
  • Matlab全局变量可以在Matlab中产生更好的性能吗?

    我讨厌使用全局变量 每个人都应该这样做 如果一种语言无法使用全局变量 则应该对其进行更新 目前 当效率是目标时 我不知道在 Matlab 中使用全局变量有什么好的替代方法 据我所知 只能通过 4 种方式在回调之间共享数据 嵌套函数 geta
  • Flexbox 列换行列表,无重叠项目

    我有一个列表 我想将其包装在最大宽度为 540px 的弹出模式上显示 通常 它看起来像这样 但如果添加太多名字 那么它就会像这样重叠 我的目标是通过隐藏溢出 仅显示基于数据的最大可能列 或使其可滚动来防止名称重叠 当项目数量和名称长度未知时
  • 使用 Flexbox 控制行中的项目数

    我想在第一行显示 4 个项目 但在第二行只显示 3 个项目 然后在第三行显示 4 个项目 在第四行显示 3 个项目 依此类推 我已经通过以下方式实现了这一点nth child但代码太多 不灵活 可扩展性差 可以用flex吗 还是网格 box
  • PHPExcel - 未正确获取引用另一个单元格的单元格值

    当我尝试从 Excel 文件中提取信息时遇到这个问题 这是我的情况 我有 34 个 Excel 文件 这些文件是我从各个用户那里收到的 我正在使用 PHP 版本 5 从 Excel 文件中提取 我的脚本将为每个文件循环 并根据工作表名称再次
  • Primefaces tabview tabChange 事件在显示选项卡后触发

    我正在使用 Primefaces 3 5 和 JSF2 1 Mojarra 开发一个项目 我创建了一个primefaces
  • matlab使用activex接口自动保存excel文件

    我有一个matlab代码 运行程序后 创建了一个文件 example2 xlsx 现在我有下面的代码 我希望 matlab 将当前的 example2 xlsx 替换为新的 example2 xlsx 自动保存而不询问我是否要替换它 e a
  • 在 iPhone 中实现静态库

    我创建了一个静态库如下这个链接 但我在使用图书馆时遇到问题 有关如何在 iPhone 项目中使用静态库的参考 我遵循这个链接 但我仍在为 如何在任何其他 iPhone 项目中实现静态库 而苦苦挣扎 问题 谢谢你们 您可以像帖子中那样使用跨项
  • 如何使用Python打印多行文本

    如果我想在Python中打印多行文本而不需要输入print 对于每一行 有没有办法做到这一点 我在 Python 3 5 1 中将其用于 ASCII 艺术 您可以使用triple引号 单 或双 a text text text print
  • Java 唯一随机生成整数的数组

    public static int uniqueRandomElements int size int a new int size for int i 0 i lt size i a i int Math random 10 for in