kla*_*ner 3 arrays random algorithm
嘿那里,
我有一个(唯一的)对象的数组,并希望得到这个数组的4个随机对象,但不应该提取相同的对象两次,所以使用简单的随机函数将无法工作.
我有两个想法:
1.随机播放阵列并获得前4个项目. - >开销,因为阵列可能非常大.
2.生成随机索引.如果之前使用过该索引,请再试一次,等等...... - >有点不可靠......
你知道更好,更有效的方法吗?
Mar*_*ers 10
随机播放阵列并获得前4个项目. - >开销,因为阵列可能非常大.
使用现代版本的Fisher Yates shuffle.它可以就地执行,如果您在前四次交换后停止,它将为您提供所需的结果.没有必要洗牌整个阵列.
与其他一些解决方案相比,它还具有以下优点:如果只需要部分结果排列,则可以在中途停止