javalist取随机数_Java获取随机数的3种⽅法和总结
⽅法1
(数据类型)(最⼩值+Math.random()*(最⼤值-最⼩值+1))
例:
(int)(1+Math.random()*(10-1+1))
从1到10的int型随数
⽅法2
获得随机数
for (int i=0;i<30;i++)
{System.out.println((int)(1+Math.random()*10));}
(int)(1+Math.random()*10)
通过java.Math包的random⽅法得到1-10的int随机数
公式是:最⼩值---最⼤值(整数)的随机数
(类型)最⼩值+Math.random()*最⼤值
⽅法3
Random ra =new Random();
for (int i=0;i<30;i++)
{System.out.Int(10)+1);}
通过java.util包中的Random类的nextInt⽅法来得到1-10的int随机数
⽣成0到1之间的任意随机⼩数:
⽣成[0,d)区间的随机⼩数,d为任意正的⼩数,则只需要将nextDouble⽅法的返回值乘以d即可。
[n1,n2]
也就是 ra.nextDouble() * (n2-n1)+n1
java产⽣随机数的⼏种⽅式
⼀.在j2se⾥我们可以使⽤Math.random()⽅法来产⽣⼀个随机数,这个产⽣的随机数是0-1之间的⼀个double,我们可以把他乘以⼀定的数,⽐如说乘以100,他就是个100以内的随机,这个在j2me中没有。
⼆.在java.util这个包⾥⾯提供了⼀个Random的类,我们可以新建⼀个Random的对象来产⽣随机数,他可以产⽣随机整数、随机float、随机double,随机long,这个也是我们在j2me的程序⾥经常⽤的⼀个取随机数的⽅法。
三.在我们的System类中有⼀个currentTimeMillis()⽅法,这个⽅法返回⼀个从1970年1⽉1号0点0分0秒到⽬前的⼀个毫秒数,返回类型是long,我们可以拿他作为⼀个随机数,我们可以拿他对⼀些数取模,就可以把他限制在⼀个范围之内啦
其实在Random的默认构造⽅法⾥也是使⽤上⾯第三种⽅法进⾏随机数的产⽣的
对于⽅法⼆中的Random类有以下说明:
java.util.Random类有两种⽅式构建⽅式:带种⼦和不带种⼦
不带种⼦:
此种⽅式将会返回随机的数字,每次运⾏结果不⼀样
public class RandomTest {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
for(int i=0;i<10;i++){
System.out.Int());
}
nextint()方法}
带种⼦:
此种⽅式,⽆论程序运⾏多少次,返回结果都是⼀样的
public static void main(String[] args) {
java.util.Random r=new java.util.Random(10);
for(int i=0;i<10;i++){
System.out.Int());
}
}
两种⽅式的差别在于
(1) ⾸先请打开Java Doc,我们会看到Random类的说明:
此类的实例⽤于⽣成伪随机数流,此类使⽤ 48 位的种⼦,该种⼦可以使⽤线性同余公式对其进⾏修改(请参阅 Donald Knuth 的《The
Art of Computer Programming, Volume 2》,第 3.2.1 节)。
如果⽤相同的种⼦创建两个 Random 实例,则对每个实例进⾏相同的⽅法调⽤序列,它们将⽣成并返回相同的数字序列。为了保证实现这种特性,我们为类Random指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使⽤此处所⽰的所有算法。但是允许 Random 类的⼦类使⽤其他算法,只要其符合所有⽅法的常规协定即可。
Java Doc对Random类已经解释得⾮常明⽩,我们的测试也验证了这⼀点。
(2) 如果没有提供种⼦数,Random实例的种⼦数将是当前时间的毫秒数,可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码,我们可以⾮常明确地看到这⼀点。
public Random() { this(System.currentTimeMillis()); }
另外:
random对象的nextInt(),nextInt(int n)⽅法的说明:
int nextInt()
返回下⼀个伪随机数,它是此随机数⽣成器的序列中均匀分布的 int 值。
int nextInt(int n)
返回⼀个伪随机数,它是从此随机数⽣成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论