② 优缺点分析
Random 使用 LGC 算法生成伪随机数的优点是执行效率比较高,生成的速度比较快。
它的缺点是如果 Random 的随机种子一样的话,每次生成的随机数都是可预测的(都是一样的)。如下代码所示,当我们给两个线程设置相同的种子数的时候,会发现每次产生的随机数也是相同的:
// 创建两个线程 for (int i = 0; i < 2; i++) { new Thread(() -> { // 创建 Random 对象,设置相同的种子 Random random = new Random(1024); // 生成 3 次随机数 for (int j = 0; j < 3; j++) { // 生成随机数 int number = random.nextInt(); // 打印生成的随机数 System.out.println(Thread.currentThread().getName() + ":" + number); // 休眠 200 ms try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("---------------------"); } }).start(); }
以上程序的执行结果为: