배경
요일로 표시된 7 쌍의 양말 인 "평일 양말"컬렉션이 있습니다. 양말을 씻을 때 더미에 쌓여 옷장에 넣기 전에 올바른 쌍으로 정리해야합니다. 내 전략은 더미에서 한 번에 하나의 무작위 양말을 꺼내 서랍에 넣는 것입니다. 서랍에 맞는 양말 한 켤레가있을 때마다 양말을 묶어 옷장에 넣습니다. 당신의 임무는이 무작위 프로세스를 시뮬레이션하고 첫 번째 일치하는 쌍을 찾는 데 필요한 추첨 수를 반환하는 것입니다.
입력
입력 값은 정수 N ≥ 1 입니다. "일주일 일수"를 나타냅니다. 더미에 N 쌍의 양말이 있으며 각 쌍에는 고유 한 레이블이 있습니다. 필요한 경우 PRNG 시드를 입력으로 사용할 수도 있습니다.
산출
당신의 출력은 첫 번째 일치하는 쌍을 찾기 전에 내가 뽑아야하는 양말의 수입니다. 예를 들어 처음 두 양말이 이미 일치하는 쌍을 형성하면 출력은 2입니다.
물론 출력은 임의적이며 도면 순서에 따라 다릅니다. 양말을 그릴 때마다 선택이 균일하고 다른 모든 선택과 독립적이되도록 모든 도면 순서가 동일 하다고 가정 합니다.
예
하자 N = 3 우리는 총 6 개 양말, 라벨이 그래서, AABBCC을 . "양말 드로잉 프로토콜"의 가능한 실행은 다음과 같습니다.
| Pile | Drawer | Pairs
Begin | AABBCC | - | -
Draw B | AABCC | B | -
Draw C | AABC | BC | -
Draw B | AAC | C | BB
Draw A | AC | AC | BB
Draw A | C | C | AA BB
Draw C | - | - | AA BB CC
첫 번째 일치 쌍은 두 번째 B 를 그리고 난 후 세 번째 양말이 그려 졌으므로 올바른 출력이 3됩니다.
규칙과 득점
전체 프로그램 또는 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점이 허용되지 않습니다. 입력 및 출력은 단항 (1 s)을 .
언어의 내장 RNG가 완벽하다고 가정 할 수 있습니다. 출력에 올바른 확률 분포가있는 한 실제로 양말 그리기 프로토콜을 시뮬레이션 할 필요는 없습니다.
"테스트 사례"
다음은 입력 N = 7에 대한 모든 출력의 대략적인 확률입니다 .
Output 2 3 4 5 6 7 8
Probability 0.077 0.154 0.210 0.224 0.186 0.112 0.037
솔루션을 테스트하기 위해, 예를 들어, 40,000 회 실행하여 출력 분포가 이에 가까운 지 확인할 수 있습니다.
Draw all socks. End up with an odd number.