java中random⽅法取值范围_Java中的Random()函数Java中存在着两种Random函数:
⼀、java.lang.Math.Random:
调⽤这个Math.Random()函数能够返回带正号的double值,该值⼤于等于0.0且⼩于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是⼀个伪随机数,在该范围内(近似)均匀分布。
1 Math.Random()函数产⽣的随机数:0.9956775355643588
2 Math.Random()函数产⽣的随机数:0.3452454357686029
3 Math.Random()函数产⽣的随机数:0.9489235373049734
4 Math.Random()函数产⽣的随机数:0.5280729775003039
View Code
⼆、java.util.Random:
Random类是伪随机数的产⽣器。之所以称之为伪随机数是因为它们是简单的均匀分布序列。Random定义了下⾯的构造函数。
Random()
Random(long seed)
第⼀种形式创建⼀个使⽤当前时间作为起始值或称为初始值的数字发⽣器。第⼆种形式允许⼈为指定⼀个初值。
如果⽤初值初始化了⼀个Random对象,就对随机序列定义了起始点。如果⽤相同的初值初始化另⼀个Random对象,将获得同⼀随机序列。如果要⽣成不同的序列,应当指定不同的初值。实现这种处理的最简单的⽅法是使⽤当前时间作为产⽣Random对象的初值。这种⽅法减少了得到相同序列的可能性。
⽅法
描述
boolean nextBoolean
返回下⼀个布尔(boolean)随机数
void nextBytes(byte vals[])
⽤随机产⽣的值填充vals
nextint()方法double nextDouble()
返回下⼀个双精度(double)随机数
float nextFloat()
返回下⼀个浮点(float)随机数
double nextGaussian()
返回下⼀个⾼斯随机数
int nextInt()
返回下⼀个整型(int)随机数
int nextInt(int n)
返回下⼀个介于0和n之间的整型(int)随机数
long nextLong()
返回下⼀个长整型(long)随机数
void setSeed(long newSeed)
将由newSeed指定的值作为种⼦值(也就是随机数产⽣器的开始值)
正如你能看到的,从Random对象中可以提取七种类型的随机数。从nextBoolean()⽅法中可以获得随机布尔数。通过调⽤nextBytes()⽅法获得随机字节数。通过调⽤nextInt()⽅法可以获得随机整型数。通过调⽤nextLong()⽅法可以获得均匀分布的长整型随机数。通过调⽤nextFloat()和nextDouble()⽅法可以分别得到在0.0到1.0之间的,均匀分布的float和double随机数。最后,调⽤nextGaussian()⽅法返回中⼼在0.0,标准偏差为1.0的double值,这就是著名的钟形曲线。
三、Random类使⽤⽰例
Random r = new Random()
⽣成[0, 1.0)区间的⼩数:double d1 = r.nextDouble();直接使⽤nextDouble⽅法获得。
⽣成[0, 5.0)区间的⼩数:double d2 r.nextDouble()*5;因为nextDouble⽅法⽣成的数字区间是[0, 1.0),将该区间扩⼤5倍即是要求的区间。同理,⽣成[0, d)区间的随机⼩数,d为任意正的⼩数,则只需要将nextDouble⽅法的返回值乘以d即可。
⽣成[1, 2.5)区间的⼩数:double d3 = r.nextDouble()*1.5+1;⽣成[1, 2.5)区间的随机⼩数,则只需要⾸先⽣成[0, 1.5)区间的随机数字,然后将⽣成的随机数区间加1即可。同理,⽣成任意⾮从0开始的⼩数区间[d1, d2)范围的随机数字(其中d1不等于0),则只需要⾸先⽣成[0, d2-d1)区间的随机数字,然后将⽣成的随机数区间加上d1即可。
⽣成任意整数:int n1 = r.nextInt();直接使⽤nextInt⽅法即可。
⽣成[0, 10)区间的整数:int n2 = r.nextInt(10) /n2 = Math.Int()%10) ;前⾯两种⽅法均可⽣成[0, 10)区间的整数。第⼀种实现使⽤Random类中的nextInt(int n)⽅法直接实现。第⼆种实现中,⾸先调⽤nextInt()⽅法⽣成⼀个任意的int数字,该数字和10取余以后⽣成的数组区间为(-10, 10),然后再对该区间求绝对值,则得到的区间就是[0, 10)了。同理,⽣成任意[0, n)区间的随机整数,都可以使⽤如下代码:int n2 = r.nextInt(n); n2 = Math.Int()%n)
⽣成[0, 10]区间的整数:int n3 = r.nextInt(11);n3 = Math.Int()%11)相对于整数区间,[0, 10]区间和[0, 11)区间等价,所以即⽣成[0, 11)区间的整数。
⽣成[-3, 15)区间的整数:int n4 = r.nextInt(18)-3; n4 = Math.()%18)-3;⽣成⾮从0开始区间的随机整数,可以参看上⾯⾮从0开始的⼩数区间实现原理的说明。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论