java random.nextInt的坑
下面的代码
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的坑相关推荐
- java Random.nextInt()方法
public int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n. 直接上代码: package o ...
- Java Random nextInt()方法与示例
随机类nextInt()方法 (Random Class nextInt() method) Syntax: 句法: public int nextInt(); public int nextInt( ...
- Java:Random.nextInt()
public int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n.
- java random nextint_java Random.nextInt()方法的具体使用
lic int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n. 直接上代码: package org. ...
- Java中Random.nextInt()方法功能简介说明
转自: Java中Random.nextInt()方法功能简介说明 下文笔者将讲述Random.nextInt()方法的功能简介说明,如下所示: Random.nextInt()方法功能:用于随机产生 ...
- 常见的内存错误java_Java虚拟机常见内存溢出错误汇总,Java中常见的坑看了可以少走点弯路...
那篇沃那粕矩要汇总了Java实拟机常睹挡刳存溢得降足误,警示哪当ツ倒家,躲免得降足,感爱好的朋友可能懂里下 1.劳行 哪当ツ倒事java斥地的小伙伴正在平常平但凡的斥地任胃┬,该当会肥睹各类百般的同扯 ...
- java random算法_负载均衡--随机算法(Random)
随机算法是指:从服务器列表中,随机选取一台服务器进行访问.由概率论可以得知,随着客户端调用服务端的次数增多,其实际效果趋近于平均分配请求到服务端的每一台服务器,也就是达到轮询的效果. 一.算法描述 假 ...
- java random.nextbytes_Java Random类
首页 > 基础教程 > 常用类 > 常用 Random类 Java Random类 Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种 ...
- java——Random类和Math.Rondom
转载:https://www.cnblogs.com/fjsnail/p/3474654.html Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个M ...
最新文章
- TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
- 深入剖析OkHttp系列(五) 来自官方的事件机制
- spring boot实战(第二篇)事件监听
- mysql 删除重复记录,只保留id字段值最大的记录
- JDK1.8 Lambda 使用详解(转)
- b树删除节点每次只能删一个吗_深入理解数据库系统之存储存引擎(B树)
- 小程序: 在同一个文件夹中配置多个页面
- codeforces 281A-C语言解题报告
- javascript 之作用域-06
- js的oop方式和this指针问题
- java8 collections_关于Jdk7与Jdk8对Collections进行分组的区别
- Linux用户-政府篇
- MongoDB和Compass安装教程
- win7驱动精灵_win7驱动打不上?黑科技H310/B360 USB核显驱动安装教程
- 西门子mag6000接线_西门子MAG5000/6000电磁流量计应用及安装
- 七个习惯之七:不断更新
- Python爬虫爬取豆瓣TOP250
- python应用学习(三)——pyttsx3用四行代码让python说话!
- 【达摩院OpenVI】视频目标渐进式Transformer跟踪器ProContEXT
- iOS内存扫描工具实现