首页  >  文章  >  web前端  >  如何高效地选择不重复的随机数组项?

如何高效地选择不重复的随机数组项?

Patricia Arquette
Patricia Arquette原创
2024-10-31 04:47:30327浏览

How Can I Efficiently Select Random Array Items Without Repeats?

如何高效地随机选择数组项目而不重复

您的代码创建一个最近选择的数组以防止重复,并调用递归函数当所选项目位于最近的选择中时,命名为 ChooseName()。这种方法可以确保唯一性,但如果数组大小有限,可能会导致无限循环。

这是一个递归函数吗?

是的,chooseName() 会调用自身找到一个独特的选择。递归使函数能够迭代数组项,直到找到最近选择中没有的项。

提高效率

要避免无限循环,请考虑另一种方法答案中建议:

<code class="javascript">function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length < 1) { copy = array.slice(0); }
    var index = Math.floor(Math.random() * copy.length);
    var item = copy[index];
    copy.splice(index, 1);
    return item;
  };
}</code>

此函数生成原始数组的副本并从中随机选择一个项目。一旦使用了所有项目,它就会创建原始数组的新副本,即使数组已耗​​尽,也能确保唯一的选择。

以上是如何高效地选择不重复的随机数组项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn