下面的代码

       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是随机数且不重复的,不过事实证明我想多了。

java random.nextInt的坑相关推荐

  1. java Random.nextInt()方法

    public int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n. 直接上代码: package o ...

  2. Java Random nextInt()方法与示例

    随机类nextInt()方法 (Random Class nextInt() method) Syntax: 句法: public int nextInt(); public int nextInt( ...

  3. Java:Random.nextInt()

    public int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n.

  4. java random nextint_java Random.nextInt()方法的具体使用

    lic int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n. 直接上代码: package org. ...

  5. Java中Random.nextInt()方法功能简介说明

    转自: Java中Random.nextInt()方法功能简介说明 下文笔者将讲述Random.nextInt()方法的功能简介说明,如下所示: Random.nextInt()方法功能:用于随机产生 ...

  6. 常见的内存错误java_Java虚拟机常见内存溢出错误汇总,Java中常见的坑看了可以少走点弯路...

    那篇沃那粕矩要汇总了Java实拟机常睹挡刳存溢得降足误,警示哪当ツ倒家,躲免得降足,感爱好的朋友可能懂里下 1.劳行 哪当ツ倒事java斥地的小伙伴正在平常平但凡的斥地任胃┬,该当会肥睹各类百般的同扯 ...

  7. java random算法_负载均衡--随机算法(Random)

    随机算法是指:从服务器列表中,随机选取一台服务器进行访问.由概率论可以得知,随着客户端调用服务端的次数增多,其实际效果趋近于平均分配请求到服务端的每一台服务器,也就是达到轮询的效果. 一.算法描述 假 ...

  8. java random.nextbytes_Java Random类

    首页 > 基础教程 > 常用类 > 常用 Random类 Java Random类 Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种 ...

  9. java——Random类和Math.Rondom

    转载:https://www.cnblogs.com/fjsnail/p/3474654.html Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个M ...

最新文章

  1. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
  2. 深入剖析OkHttp系列(五) 来自官方的事件机制
  3. spring boot实战(第二篇)事件监听
  4. mysql 删除重复记录,只保留id字段值最大的记录
  5. JDK1.8 Lambda 使用详解(转)
  6. b树删除节点每次只能删一个吗_深入理解数据库系统之存储存引擎(B树)
  7. 小程序: 在同一个文件夹中配置多个页面
  8. codeforces 281A-C语言解题报告
  9. javascript 之作用域-06
  10. js的oop方式和this指针问题
  11. java8 collections_关于Jdk7与Jdk8对Collections进行分组的区别
  12. Linux用户-政府篇
  13. MongoDB和Compass安装教程
  14. win7驱动精灵_win7驱动打不上?黑科技H310/B360 USB核显驱动安装教程
  15. 西门子mag6000接线_西门子MAG5000/6000电磁流量计应用及安装
  16. 七个习惯之七:不断更新
  17. Python爬虫爬取豆瓣TOP250
  18. python应用学习(三)——pyttsx3用四行代码让python说话!
  19. 【达摩院OpenVI】视频目标渐进式Transformer跟踪器ProContEXT
  20. iOS内存扫描工具实现

热门文章

  1. 如何成功的运行别人的vue项目
  2. python constant_Python init.constant方法代码示例
  3. 第一章 Python Kivy 学习 -- Kivy介绍及环境安装
  4. 软件测试物流管理需求分析,第四方物流管理系统的分析与软件测试.doc
  5. struct timeval 结构体使用浅析
  6. java框架搭建视频,看完跪了
  7. 超越咨询顾问的算力,在 BI:大数据改变管理咨询
  8. ie6 7 8下的一些bug和解决办法
  9. 【人脸识别】SVM和PCA人脸识别【含GUI Matlab源码 369期】
  10. 阿里云SLB负载均衡实践