"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 반복 없이 무작위 배열 항목을 효율적으로 선택할 수 있는 방법은 무엇입니까?

반복 없이 무작위 배열 항목을 효율적으로 선택할 수 있는 방법은 무엇입니까?

2024년 11월 20일에 게시됨
검색:295

How Can I Efficiently Select Random Array Items Without Repeats?

반복 없이 배열 항목을 효율적으로 무작위로 선택하는 방법

코드는 반복을 방지하기 위해 최근 선택 항목의 배열을 생성하고 재귀 함수를 호출합니다. 선택한 항목이 최근 선택 항목에 있으면 chooseName()이라는 이름이 지정됩니다. 이 접근 방식은 고유성을 보장하지만 배열 크기가 제한되면 무한 루프가 발생할 수 있습니다.

재귀 함수인가요?

예, chooseName()은 자체 호출을 수행합니다. 독특한 선택을 찾아보세요. 재귀를 사용하면 함수가 최근 선택 항목에 없는 항목을 찾을 때까지 배열 항목을 반복할 수 있습니다.

효율성 향상

무한 루프를 방지하려면 대체 접근 방식을 고려하세요. 답변에서 제안됨:

function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length 

이 함수는 원본 배열의 복사본을 생성하고 그 중에서 무작위로 항목을 선택합니다. 모든 항목이 사용되면 원본 배열의 새 복사본이 생성되므로 배열이 소진된 경우에도 고유한 선택이 보장됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3