阅读关于 Fisher-Yates 的维基百科页面,将最后一段改组是:
最后,需要注意的是,即使生成完美的随机数,也可能由于生成器的不当使用而在实现中引入缺陷。例如,假设 Java 实现为每次调用 shuffler 创建一个新的生成器,而不传递构造函数参数。然后生成器将由语言的时间默认播种(在 Java 的情况下为 System.currentTimeMillis())。因此,如果两个调用者在小于时钟粒度(Java 情况下为一毫秒)的时间跨度内调用混洗器,他们创建的生成器将是相同的,并且(对于相同长度的数组)相同的排列将被生成。如果 shuffler 被快速连续调用多次,这几乎肯定会发生,在这种情况下会导致极其不均匀的分布;它也可以应用于来自不同线程的独立调用。更健壮的 Java 实现将使用在 shuffler 函数之外定义的生成器的单个静态实例。
除了本段的最后一句话,我什么都理解。当作者说:
更健壮的 Java 实现将使用在 shuffler 函数之外定义的生成器的单个静态实例。