今天看了一篇博文,才知道random()是可以传递参数的,以前没有这样用过。传了参就不随机了,有一定的限制性在里头了.
以一段代码为例:
import java.util.*;
public class TestRandom
{
public static void main(String [] args)
{
Random rand = new Random(47);
String [] s = new String[rand.nextInt(20)];
System.out.println(s.length);
System.out.print(Arrays.toString(s));
System.out.println();
}
}
Random.nextInt() 得到的按道理讲,应该是随机结果,但这个测试程序都是输出18。
原因就在于:Random得到的都是伪随机数列,但传递了一个参数,每次都以47作为种子,得到的当然是每次都是18了。
相同的种子总是会产生同样的数列。
还有就是学习了Random .next(int bits)和Random .nextInt()之间的区别:
Random.next(int bits),产生负“2的bits次方”~“2的bits次方”之间的随机数
所以:
Random.nextInt()相当于Random.next(32)