首頁  >  文章  >  web前端  >  如何有效率地選擇不重複的隨機數組項目?

如何有效率地選擇不重複的隨機數組項目?

Patricia Arquette
Patricia Arquette原創
2024-10-31 04:47:30324瀏覽

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