【问题标题】:What is a Random object seed [duplicate]什么是随机对象种子[重复]
【发布时间】:2015-05-09 15:12:58
【问题描述】:

大家晕 我最近开始学习 java,我有这个问题 Random obj 种子代表什么?这是什么意思 ?和之间的区别

随机 r1 = new Random(); 随机 r2 = 新随机(3);

【问题讨论】:

标签: java


【解决方案1】:

这不仅仅是 java 的事情。

让计算机生成一个真正的随机数是非常困难的。您的计算机需要执行复杂的不可预测的计算。 您的种子值将作为这些计算的输入。

许多系统会使用时间戳作为种子。因为这是一个每次运行时都会有所不同的值。 但假设您确实指定了一个种子,并且您多次使用同一个种子:

    Random rnd = new Random(10);
    System.out.println(rnd.nextInt());
    System.out.println(rnd.nextInt());
    System.out.println(rnd.nextInt());

    // do it again with the same seed
    rnd = new Random(10);
    System.out.println(rnd.nextInt());
    System.out.println(rnd.nextInt());
    System.out.println(rnd.nextInt());

此代码将打印相同的 3 个值 2 次。

输出:

-1157793070
1913984760
1107254586
-1157793070
1913984760
1107254586

因此,如果您重复使用种子值,它将生成相同的数字。

【讨论】:

    【解决方案2】:

     Random r1 = new Random();
    

    即使调用具有相同参数的 r1 方法的相同序列,您也会在应用调用之间获得不同的返回数字序列。但是,如果您提供特定的种子编号,则返回结果的序列将是相同的(当然,只有r2 将以相同的方法和参数序列被调用)。

    如果您对一些随机生成的数据集执行操作,此功能在测试中通常非常有用——它允许在每次测试运行时生成相同的数据集。

    【讨论】:

      猜你喜欢
      • 2014-06-01
      • 2013-02-01
      • 2012-09-04
      • 2019-11-12
      • 2018-05-30
      • 2013-10-20
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多