J2SE基础之Random类的使用

来源:互联网 发布:java进程占用cpu高 编辑:程序博客网 时间:2024/05/23 01:26

 

在学习排序算法的时候用到了java.util.Random类,用来取得一些随机数,通过查看API,发现了许多以前忽略的问题,在这里将用到的知识写一下:
         Random.nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。但是此随机数可能会很大,而且会有负数出现。
         所以常用Random.nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.01.0之间均匀分布的double值,然后再用
         Int i=(int)(random.nextDouble()*100)
取出一个介于0100的正整数。
         Random类还有一个带参数的构造方法:
Random(long seed)           使用单个long种子创建一个新的随机数生成器。
不知道具体的实现方法,但是当这样使用时,会产生一组固定的随机数。
 
Math.random()方法可以实现同样的效果,而且API也做出了说明:很多应用程序会发现Math.random()方法更易于使用。
public static double random()
返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同
new java.util.Random
之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。
此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。