Random类的使用方法

来源:百度文库 编辑:神马文学网 时间:2024/04/28 19:07:04
属于包:java.util.Random
Random:随机类型
1、属性。
无。
2、构造函数。
Random() :创建一个新的随机数发生器。
Random(long seed) :用一个种子(长整型)创建一个随机数发生器。
3、方法。
说明:
1. 所有方法均为public;
2. 书写格式:[修饰符] <返回类型> <方法名([参数列表])>
如:
static int parseInt(String s) 表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。
1. protected int next(int bits) :产生下一个伪随机数。
2. boolean nextBoolean() :返回下一个从随机发生器的系列中得到的均匀分布的布尔值。
3. void nextBytes(byte[] bytes) :产生随机字节数组放到指定的数组中。
4. double nextDouble() :返回下一个从随机发生器的系列中得到的均匀分布的0.0到1.0的双精度类型值。
5. float nextFloat() :返回下一个从随机发生器的系列中得到的均匀分布的0.0到1.0的浮点类型值。
6. double nextGaussian() :返回下一个从随机发生器的系列中得到的符合均匀分布的0.0的平均数到1.0方差的高斯分布双精度类型值。
7. int nextInt() :返回下一个从随机发生器的系列中得到的均匀分布的整型值。
8. int nextInt(int n) :返回下一个从随机发生器的系列中得到的均匀分布的0到指定整型数(n)之间的整型值。
9. long nextLong() :返回下一个从随机发生器的系列中得到的均匀分布的长整型值。
10. void setSeed(long seed) :设置随机数发生器的种子为一个长整型数。
关于种子的描述:
这个类的对象使用一个48位的种子,
如果这个类的两个实例是用同一个种子创建的,
并且,各自对它们以同样的顺序调用方法,
则它们会产生相同的数字序列。
下面就对上面的介绍做一个实验,
尤其注意相同种子时的结果,
如果用默认的构造函数构造对象,
他们是属于同一个种子的。
import java.util.Random;
public class TestRandom{
public static void main(String[] args){
Random r1 = new Random(50);
System.out.println("第一个种子为50的Random对象");
System.out.println("r1.nextBoolean():\t" + r1.nextBoolean());
System.out.println("r1.nextInt():\t\t" + r1.nextInt());
System.out.println("r1.nextDouble():\t" + r1.nextDouble());
System.out.println("r1.nextGaussian():\t" + r1.nextGaussian());
System.out.println("---------------------------");
Random r2 = new Random(50);
System.out.println("第二个种子为50的Random对象");
System.out.println("r2.nextBoolean():\t" + r2.nextBoolean());
System.out.println("r2.nextInt():\t\t" + r2.nextInt());
System.out.println("r2.nextDouble():\t" + r2.nextDouble());
System.out.println("r2.nextGaussian():\t" + r2.nextGaussian());
System.out.println("---------------------------");
Random r3 = new Random(100);
System.out.println("种子为100的Random对象");
System.out.println("r3.nextBoolean():\t" + r3.nextBoolean());
System.out.println("r3.nextInt():\t\t" + r3.nextInt());
System.out.println("r3.nextDouble():\t" + r3.nextDouble());
System.out.println("r3.nextGaussian():\t" + r3.nextGaussian());
System.out.println("结果一目了然!");
}
}
结果:
第一个种子为50的Random对象
r1.nextBoolean(): true
r1.nextInt(): -1727040520
r1.nextDouble(): 0.6141579720626675
r1.nextGaussian(): 2.377650302287946
---------------------------
第二个种子为50的Random对象
r2.nextBoolean(): true
r2.nextInt(): -1727040520
r2.nextDouble(): 0.6141579720626675
r2.nextGaussian(): 2.377650302287946
---------------------------
种子为100的Random对象
r3.nextBoolean(): true
r3.nextInt(): -1139614796
r3.nextDouble(): 0.19497605734770518
r3.nextGaussian(): 0.6762208162903859
结果一目了然!