繁体   English   中英

如何随机遍历数组一次,然后以该顺序重复遍历

[英]How to randomly iterate through an array once, and then repeatedly iterate in that order

这是我的数组: arr = [0, 1, 2, 3, 4, 5]我想第一次对其进行随机迭代,然后在以后每次以相同(随机)顺序对其进行迭代。 我该怎么办? 我能想到的唯一方法是使用类似shuffle函数的方法对arr进行重组,然后依次进行迭代。 例如:

newArr = shuffle(arr);
for(j = 0; j <5; j++) {
    for(i = 0; i < newArr.length; i++)
}

我想知道是否有更简单的内联方式,这样,如果将项目追加到数组中,我就不必重新洗牌(每次都创建一个新array

我很确定没有内置功能。 所以...制作一个与数组大小相同的整数列表,并将它们分配为0..count-1。 然后从0到列表(-1)的大小中随机选择一个数字,然后删除该位置的数字并将其添加到新的(第二个)列表中。 重复直到第一个列表为空。 第二个列表将是原始范围内的一组随机偏移量。

创建第二个数组。 接下来,使用随机数填充数组(范围从0到array.length )。 现在创建一个遍历辅助数组的for循环。 数组中的每个数字都对应于array的索引。

结果:您可以通过随机迭代现在array ,而无需修改的顺序array

稍后,您可以使用splice()函数在随机点处将其添加到第二个数组中(并可以push()添加到主array )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM