代码改变世界

java随机数的产生

2009-05-19 10:47  cesc711  阅读(465)  评论(0编辑  收藏  举报

         昨天在写程序的时候用random类来产生随机数,但是发现每次产生出的随机数都是一样的,为此困惑不已。后来在网上查了查,发现是配置文件里面所配置的seed造成的,每次都用一个seed,产生的随机数当然就一样了。
         下面很简单的总结一下java中产生随机数的几个方法,当然也是网上看到的:
          1.用System.currentTimeMillis()获取一个当前时间毫秒的long型数字。
          2.用Math.random()返回一个0到1之间的double值。
          3.通过Random类来产生一个随机数。

          Random类里面有产生各种不同类型随机数的方法,我这里就不一一介绍了。我只说说Random类的简单使用。
          Random类的实例用于产生伪随机数流。此类使用48为的种子,利用线性同余公式对其进行修改。如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将产生并返回相同的数字序列。
          创建带种子的Random类的的实例对象:

          Random random1 = new Random(711L);

          Random random2 
= new Random();
          random.setseed(
777L);


         创建不带种子的Random类的实例对象:

         Random random = new Random();