이 질문의 배경은 다음과 같습니다. 친구와 나는 다른 사람들에게 선물을 줄 필요가있는 게임을하고있었습니다. 누가 누구에게 선물을 주어야하는지 결정하기 위해 우리는 추첨을하기로 결정했습니다. 그러나 문제는 누군가가 자신에게 선물을 줄 수 있다는 것입니다. 당신은 불행한 사람들의 예상 숫자가 1임을 알 수 있습니다. 그래서 이것은 매우 자주 발생합니다.
이 목적을 위해 정리가 큰 도움이 될 것 같습니다. 정리를 제대로 만들 수 있다면, 하나의 정리를 고르면 누가 선물을 줄 것인지 결정할 수 있습니다.
무작위 배열 생성은 Las Vegas 방법으로 수행 할 수 있습니다. 그러나 문제는 다항식 실행 시간 만 예상한다는 것입니다. 그래서 저는 i 번째 정리를 찾는 문제에 왔습니다. [1, D_n]에서 i를 무작위로 고르고 최악의 다항식 시간 (효율적인) 알고리즘을 사용하여 i 번째 정렬을 해제하면 완료됩니다.