java random.nextInt的坑
来源:互联网 发布:软件设计师怎么考 编辑:程序博客网 时间:2024/06/01 09:10
下面的代码
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是随机数且不重复的,不过事实证明我想多了。
0 0
- java random.nextInt的坑
- java random.nextInt()的使用
- java Random.nextInt()方法
- Java: Random.nextInt() 和Math.random()的区别
- Java: Random.nextInt() 和Math.random()的区别
- java Random.nextInt()与Math.random()的比较
- Random的nextInt用法
- Random的nextInt用法
- Random的nextInt用法
- java.util.Random 类的 nextInt(int num )
- Java中Random类的nextInt()方法详解
- Random.nextint() 和Math.random()的区别
- Random.nextInt()
- 我也来谈谈Java: Random.nextInt() 和Math.random()的区别
- int java.util.Random.nextInt(int n)
- java中random.nextInt()不随机性
- Random随机数nextInt(n)的使用
- random.nextInt() random.nextDouble()
- Linux网络编程
- 威佐夫博弈
- 修改input标签type=file类型的文字
- FFmpeg 常用命令
- Android之定向广播
- java random.nextInt的坑
- x64下vs2013 C++遍历目录下所有文件使用_findnext()调试时中断
- python中的urlencode与urldecode
- Native.js示例汇总
- c primer plus第11章总结:字符串和字符串函数
- 序列化和反序列化
- python通过get方式,post方式发送http请求和接收http响应-urllib urllib2
- 51NOD 1246 罐子和硬币(脑洞大开)
- IOS开发之OC篇(1)——初识IOS开发