Random类产生伪随机数,它的用法有点意识。
Random rand = new Random();
如果在实例化时没有传递任何参数,那么Java就会将当前时间作为随机数生成器的种子,并由此在程序没一次执行是都产生不同的输出。而如果在实例化时提供种子,就可以在每次执行程序时都生成相同的随机数,并且它的输出是可以验证的。
(一) 例如:Random rand = new Random();
int k = rand.nextInt()+1;
此时rand.nextInt() 或者 rand.nextInt(20) ,程序在每次运行时都会产生不同的随机数。
(二) Random rand = new Random(47);
(47被Bruce Eckel成为魔幻数字) 此时若 int k = rand.nextInt()+1; 每次程序的运行k都会得到相同的值。
若 int k = rand.nextInt(100)+1; 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和100(不包括)之间均匀分布的 int
值。nextInt
的常规协定是,伪随机地生成并返回指定范围中的一个 int
值。所有可能的 n 个 int
值的生成概率(大致)相同。
此时每次程序运行 k 也会得到相同的值。