二、Random类
在进行随机时,随机算法的起源数字称为数(seed),在数的基础上进行一定的变换,从而产生需要的随机数字。
相同数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
2 、Random类中的常用方法
Random 类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍:
a 、public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
b 、public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间,这里中括号代表包含区间端点,小括号代表不包含区间端点,也就是0到1之间的随机小数,包含0而不包含1.0。java随机数
c 、public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-2的31次方到2的31次方-1之间。
如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
d 、public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
e 、public void setSeed(long seed)
该方法的作用是重新设置Random对象中的数。设置完数以后的Random对象和相同数使用new关键字创建出的Random对象相同。
3 、Random类使用示例
使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字。以下生成随机数的代码均使用以下Random对象r进行生成:
a 、生成[0,1.0)区间的小数
直接使用nextDouble方法获得。
b、生成[0,5.0)区间的小数
因为nextDouble方法生成的数字区间是[0,1.0),将该区间扩大5倍即是要求的区间。
同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
c、生成[1,2.5)区间的小数 [n1,n2]
double d3 = r.nextDouble() * 1.5 + 1;【也就是 r.nextDouble() * (n2-n1)+n1】
生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。
同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。
d、生成任意整数
直接使用nextInt方法即可。
e、生成[0,10)区间的整数
以上两行代码均可生成[0,10)区间的整数。
第一种实现使用Random类中的nextInt(int n)方法直接实现。
第二种实现中,首先调用nextInt()方法生成一个任意的int数字,该数字和10取余以后生成的数字区间为(-10,10),因为按照数学上的规定余数的绝对值小于除数,然后再对该区间求绝对值,则得到的区间就是[0,10)了。
同理,生成任意[0,n)区间的随机整数,都可以使用如下代码:
f、生成[0,10]区间的整数
相对于整数区间,[0,10]区间和[0,11)区间等价,所以即生成[0,11)区间的整数。
g、生成[-3,15)区间的整数
生成非从0开始区间的随机整数,可以参看上面非从0开始的小数区间实现原理的说明。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHPERZ。
相关阅读 :
Java获取最后插入MySQL记录的自增ID值的3种方法
Java中如何获取mysql连接的3种方法总结
Java中如何获取mysql连接的3种方法总结
Java中如何获取mysql连接的3种方法总结
Java实现求小于n的质数的3种方法
Java中指定时区的3种方法
java实现斐波那契数列的3种方法
Java生成随机数的2种示例方法代码
Java线程关闭的3种方法
Java解析xml的四种方法汇总
解决javaWEB中前后台中文乱码问题的3种方法
浅谈Java中随机数的几种实现方式
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70093-5.html
再一个盗版盛行
那些所谓的创新公司靠圈钱过日子
潜艇下潜
有写小说经历且勉强可以的1