嘿, 我有一个(唯一的)对象数组,想得到这个数组的4个随机对象,但是同一对象不应该被提取两次,因此使用简单的随机函数将不起作用。
我有两个想法: 1.随机排列数组并获得前4个项目。->开销,因为数组可能非常大。 2.生成随机索引。如果以前使用过该索引,请重试,依此类推…->有点不可靠…
您知道更好,更有效的方法吗?
随机排列数组并获得前4个项目。->开销,因为数组可能非常大。
使用现代版本的Fisher Yates随机播放。它可以就地执行,如果您在前四次交换之后停止,它将为您提供所需的结果。无需重新整理整个阵列。
与其他解决方案相比,它还具有以下优点:如果仅需要一部分结果排列,则可以在整个过程中将其停止