小码问答,有问必答!

关于随机数返回值的问题

老师,我在改一个问题就是

Random r = new Random(1);

for (int i = 0; i < 5; i++) {

    double ran1 = r.nextDouble()*0.01;

    System.out.println(ran1);

}

在括号里面写上一个1之后,每次返回都是固定的随机数,但是我在括号里不写东西的话,他有时候会随机出

0.006412020312278755

0.0037039297030271824

4.5564569452918315E-4

0.0020645665017904893

5.426636313082744E-4

这种情况,有俩随机数不对。我想返回都是这种0.00xxxxx这种,我这个应该怎么改啊


JavaEE

收藏

1个回答

我要回答

  • author
    牛叔叔 2021-05-21 16:11

    java中Random类提供了两个构造函数,一个默认构造器,一个带整数构造器。

    构造器中所传递整数是随机数的种子,电脑中的随机数都是伪随机数,如果随机数种子相同,则使用该种子生成的随机数序列是一致的。也就是无论你运行多少次,发现随机数序列相同。


    默认构造函数使用了当前的系统时间作为种子,这样运行起来每次看到的序列也就是不一样的了。


    0.001E-4这种是科学计数法表示的浮点数,如果你们想要的随机数需要在某个范围,比如0.1到0.6之间的随机数,可以这样获得:

    r.nextDouble()*(0.6-0.1)+0.1