J2SE基础夯实系列之随机数产生方法小知识点
来源:互联网 发布:mac 所有软件打不开 编辑:程序博客网 时间:2024/04/29 08:21
产生随机数的时候,避免使用nextInt()方法,尽量使用nextInt(int n)方法
如果想要产生位于0和某个上界之间的随机整数,用next()方法的话,代码如下:
- Random r = new Random();
- public int random(int n) {
- return Math.abs(r.nextInt())%n
- }
因为,对于nextInt()方法来说,产生的数是随机的,但是有如下三个缺点:
a:如果n是一个比较小的 n的乘方,比较短的周期后,它产生的随机书序列将会重复。
b:如果n不是2的平方,平均起来,它产生的数字并不是均匀分布的,有的数字出现的频率比较高。
c:第三个缺点是,这个程序有时候可能会产生灾难性后果。如下面的程序:
- public class TestIterator {
- public static void main(String[] args) {
- System.out.println(Math.abs(Integer.MIN_VALUE)%23);
- }
- }
产生的结果是-6.
再看下面:
- public class TestIterator {
- public static void main(String[] args) {
- System.out.println(Math.abs(Integer.MIN_VALUE)%23);
- System.out.println(Integer.MIN_VALUE);
- System.out.println(Math.abs(Integer.MIN_VALUE));
- }
- }
abs函数,对于返回的还是它本身。
- Integer.MIN_VALUE
所以,这里容易出问题。
那么用nextInt(int n)方法就可以避免上面那些缺点。
- J2SE基础夯实系列之随机数产生方法小知识点
- J2SE基础夯实系列之String类的split方法
- J2SE基础夯实系列之静态工厂方法
- J2SE基础温习夯实系列之总纲
- J2SE基础夯实系列之异常体系
- J2SE基础夯实系列之数组
- J2SE基础夯实系列之JavaBean
- J2SE基础夯实系列之Enum枚举
- J2SE基础夯实系列之File的相关方法代码实例
- J2SE基础夯实系列之使用Arrays.sort()方法,以及涉及到的Comparable和Comparator
- J2SE基础夯实系列之访问限定符
- J2SE基础夯实系列之遍历Map的所有元素
- J2SE基础夯实系列之throws还有throw的区别
- J2SE基础夯实系列之finally中return语句
- J2SE基础夯实系列之正则表达式(Regular Expression)
- J2SE基础夯实系列之垃圾回收机制
- J2SE基础夯实系列之正则表达式Java
- J2SE基础夯实系列之容器(待更新)
- JQuery【横向菜单】
- poj 1276 Cash Machine (多重背包)
- java与硬件交互:U盾与JSP的集成
- 几种任务调度的 Java 实现方法与比较
- 如何才算成功?如何才能成功?
- J2SE基础夯实系列之随机数产生方法小知识点
- 队列
- DSP之LCM使用
- 数据类型的转换
- hdu 1010 Tempter of the Bone
- Python cx_Oracle - import not a valid win32 app or ImportError: No module named cx_Oracle Found
- 基于分区表的物化视图快速刷新以及维护
- poj 2001字典树水题
- sicily--1351. Multi-key Sorting