java random.nextInt的坑

java random.nextInt的坑下面的代码Randomrandom=newRandom();Integercode=random.nextInt(len);很简单的两句代码,需要注意两点:第一:nextInt的取值是[0,n),不包括n。如果是随机list,直接传list的size,不用担心下标越界。api说明:Returnsapseudorandom,uniformly

大家好,又见面了,我是你们的朋友全栈君。

下面的代码

       Random random = new Random();
        Integer code = random.nextInt(len);

很简单的两句代码,需要注意两点:
第一:nextInt的取值是[0,n) ,不包括n。如果是随机list,直接传list的size,不用担心下标越界。 api说明:

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)

第二个:nextInt在数据量小的时候,重复概率比较高。比如现在有一个大小为6的list,我希望随机显示4条且不重复。正确的做法是每次得到随机数后,移除下标对于的对象。这样即使random重复了也没关系,因为下标对应数据移除后,同样的下标对应的对象是不一样的。
千万别像我之前的做法,遍历list,然后随机取到下标后,再去重。这样有时能得到4个,有时得不到。比如下标会出现 5,1,1,1,2,1.这样的话,最终list只会有三个。


之前一直没有怀疑是这段代码的问题,怀疑接口不稳定或者是数据不完整之类的。查日志还一直在看接口传递参数和返回参数,结果是因为对nextInt理解不深刻,在我印象中感觉randomInt是随机数且不重复的,不过事实证明我想多了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162896.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月22日 下午10:00
下一篇 2022年7月22日 下午10:00


相关推荐

  • pycharm实用快捷键注释大全(持续更新中)

    pycharm实用快捷键注释大全(持续更新中)Ctrl F1 显示错误描述或警告信息 Alt Enter 快速修正 Ctrl R 替换 Ctrl Shift F 或者连续 2 次敲击 shift 全局查找 可以在整个项目中查找某个字符串什么的 如查找某个函数名字符串看之前是怎么使用这个函数的 Ctrl Shift R 全局替换 Alt Shift F10 运行模式配置 Alt

    2025年7月3日
    6
  • myeclipse6.5注册码在线生成_机器码生成注册码在线

    myeclipse6.5注册码在线生成_机器码生成注册码在线在线生成网址http://key.858game.com/index.jspmyeclipse8.5注册码列表:      lipengxin      yLR8ZC-855575-645657520873808      2016-01-0310:18:40                       myeclipse10.注册

    2026年4月18日
    5
  • 国外推荐:计算机专业人士必读的书籍_计算机专业排名世界

    国外推荐:计算机专业人士必读的书籍_计算机专业排名世界国外大牛推荐:计算机专业人士必读好书(30本经典)分类:程序人生2014-04-1123:17175人阅读评论(0)收藏举报计算机书籍1.《代码大全》史蒂夫·迈克康奈尔  推荐数:1684  “优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来,就是我们本能所说的“编写整洁的代码”。这本书有50

    2026年4月13日
    3
  • 卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!

    卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!作者|Rocky0429来源|Python空间大家好,我是Rocky0429,一个喜欢在网上收集各种资源的蒟蒻…网上资源眼花缭乱,下载的方式也同样千奇百怪,比如BT下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的x雷和某度网盘成了我经常使用的工具。作为一个没有钱的穷鬼,某度网盘几十kb的下载速度让我…

    2022年6月14日
    35
  • GB2312编码_gb2312是简体中文的编码格式

    GB2312编码_gb2312是简体中文的编码格式在区码和位码的基础上,分别加上0XA0的偏移,便是GB2312编码;我们制作ASCII字库时,一般只做可以显示出来的字符字模,前面命令型的ASCII字符,我们不做字模,即从“空格开始”,ASCII表

    2022年8月3日
    6
  • 常用API,基本类型包装类,日期类,异常,集合进阶,IO流,多线程

    常用API,基本类型包装类,日期类,异常,集合进阶,IO流,多线程​十九.常用API19.1MathMath包含执行基本数字运算的方法没有构造方法,如何使用类中的成员呢?看类的成员是否都是静态的,如果是,通过类名就可以直接调用公19.1.1Math的常用方法绝对值publicclassMathDemo{publicstaticvoidmain(String[]args){//publicstaticintabs(inta):返回参数的绝对值System.out.println(

    2022年5月16日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号