도박꾼의 오류는 미래에 자주 발생하는 일과 한동안 발생하지 않은 일이 곧 일어날 가능성이 높다고 잘못 인식하는인지 적 편견입니다. 당신의 임무는 이것의 특정 버전을 구현하는 것입니다.
도전 설명
1에서 6 사이의 임의의 정수를 반환하는 함수를 작성하십시오. 캐치 : 함수가 처음 실행될 때 결과는 균일해야하지만 (1 % 이내) 각 후속 호출은 이전에 더 적은 횟수로 롤된 값을 위해 기울어집니다. 구체적인 내용은 다음과 같습니다.
- 다이는 지금까지 생성 된 수를 기억합니다.
- 각 결과는 다음 공식으로 가중됩니다.
- 예를 들어, 지금까지 롤 수가 인 경우 가중치는 가됩니다. 즉, 3 보다 를 굴릴 확률이 4 배 더 높습니다 .
- 참고 롤 결과라는 식 수단 와 같은 가중
규칙과 가정
- 표준 I / O 규칙 및 금지 허점 적용
- 다이 롤은 결정적이어서는 안됩니다. (즉, 일반적으로 내장으로 제공되는 것처럼 휘발성 소스에서 시드 된 PRNG를 사용하십시오.)
- 랜덤 소스는 최소 65535의 기간이거나 진정한 랜덤이어야합니다.
- 최대 255 개의 가중치에 대해 분포는 1 % 이내 여야합니다.
- 16 비트 RNG는 위의 요구 사항을 모두 충족 할 수있을만큼 충분합니다. 대부분의 내장 RNG로 충분합니다.
- 해당 분배가 호출에 의해 변경되거나 포스트 롤 분배가 다이 롤과 함께 리턴되는 한 현재 분배를 전달할 수 있습니다. 분포 / 카운트 업데이트는 이 과제의 일부입니다 .
- 카운트 대신 가중치를 사용할 수 있습니다. 그렇게 할 때, 무게가 0으로 떨어질 때마다 모든 무게는 1 씩 증가해야 저장 횟수와 같은 효과를 얻을 수 있습니다.
- 이 가중치를 배열의 요소 반복으로 사용할 수 있습니다.
행운을 빕니다. 바이트가 당신에게 유리하게되기를 바랍니다.