属于包:java.util.RandomRandom:随机类型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 结果一目了然!
|