分享

Random类的使用方法

 凤舞天煌 2006-12-14
属于包: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
结果一目了然!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多