Java Collections.shuffle是否可以被视为等同于一系列随机数?

Java Collections.shuffle是否可以被视为等同于一系列随机数?,java,random,Java,Random,就这个问题: 假设您需要从列表中随机选择一系列整数。是否可以将Collections.shuffle视为等同于重复使用 我不熟悉shuffle是如何实现的,也不知道它们是否可以从置换的数学角度被看作是真正等价的。下面的链接坚持使用单个随机对象的重要性 附言:我知道Collections.shuffle添加了一个操作,因为它实际上重组了内容。这是我感兴趣的结果 编辑:在使用所谓的Fisher-Yates shuffle时详细说明了shuffle方法,发现了这个问题:如果您询问是否使用Collect

就这个问题:

假设您需要从列表中随机选择一系列整数。是否可以将Collections.shuffle视为等同于重复使用

我不熟悉shuffle是如何实现的,也不知道它们是否可以从置换的数学角度被看作是真正等价的。下面的链接坚持使用单个随机对象的重要性

附言:我知道Collections.shuffle添加了一个操作,因为它实际上重组了内容。这是我感兴趣的结果


编辑:在使用所谓的Fisher-Yates shuffle时详细说明了shuffle方法,发现了这个问题:

如果您询问是否使用Collections.shuffle,然后使用随机排序的数字的结果列表,相当于使用Random逐个拾取它们,答案是否定的。后者很可能会两次返回相同的索引,这将导致重复。

你所说的等效是什么意思?两者返回的序列完全相同?两个返回值在同一范围内?这两个概率分布函数是相同的吗?等价的方式与算法A等价于算法B,如果它们产生完全相同的固定结果。编辑:正如你所说,从概率分布的角度来看是等效的。只要记住RandomnextInt并不是真正的随机。。。它是伪随机的,因此具有确定性。洗牌也是一样,你说得对。这本书中有一些关于这个主题的有趣信息。假设使用Random的算法包括一个步骤,其中随机选择的索引被删除。那么,它们是否可以被视为等同的呢?我已经用SO的相关链接更新了这个问题。对于集合大小有限的操作,是的。直到集合中的元素用完为止。@James:不管怎样,是的,这将使它们相等。但是,删除索引的效率可能不如Collections.shuffle,只要集合支持快速索引访问,它就可以完成全部工作