무작위로 생성 된 8 천만 +1과 0의 데이터 파일을 가정합니다.
이 파일에서 임의의 10 진 정수 목록을 작성하려고합니다.
이것이이 전환을 수행 할 계획입니다.
- 8 천만 자리를 4 개의 이진수로 그룹화하십시오.
- 각 4 자리 이진수를 10 진수로 변환합니다.
- 9보다 큰 모든 10 진수 값을 버립니다.
이것은 0-9의 임의의 정수 문자열을 초래합니다
여기에 우려가 있습니다. 10에서 15까지의 값에 해당하는 4 개의 이진수 6 개 그룹을 구성하는 24 개의 이진수는 17 개의 1과 7 개의 0 만 포함합니다. 이 불균형은 짝수 대 홀수의 분포에 영향을 주거나 어떤 식 으로든 최종 십진 문자열의 무작위성을 손상시킬 수 있습니까?
업데이트 : 게시 된 답변에서 위에서 열거 한 방법이 올바른 것 같습니다. 나는 그 결론에 동의합니다. 그러나 바이너리 문자열에서 0보다 두 배 이상 많은 0을 제거해도 결과가 홀수보다 적은 편향되지 않는 이유를 여전히 이해하지 못합니다. 나는 설명을 구한다.
9
보다 효율적인 방법이 있습니다. 예를 들어, 비트 문자열을 10 개의 그룹으로 분할하고 10 진수의 3 자리 표현으로 변환 한 다음 1000 이상의 값을 가진 모든 것을 버릴 수 있습니다. 이것은 비트의 62.5 %가 아니라 97.6 %의 비트를 사용합니다. 당신은 그것보다 훨씬 더 잘할 수 없습니다. 681 그룹을 사용하여 205 자리의 Base-10 문자열로 변환하여 비트의 거의 99.7 %를 활용할 수 있습니다.
—
whuber