2014-12-19 14 views
0

파일에있는 배열에서 고정 된 수의 요소를 임의로 선택해야합니다. 나는 한 번 파일을 읽고 배열을 매우 길어서 메모리에 보관하고 싶지 않기 때문에 선택된 요소를 유지하려고합니다. 각 하위 어레이가 선택 될 확률은 동일해야합니다. 또한 처음에는 배열의 크기를 알지 못합니다.배열을 읽는 동안 임의의 수의 요소를 배열에서 선택하는 방법

어떻게하면됩니까?

+0

. 희망을 가지면 문제가 크게 바뀝니다. –

답변

1

저수지 샘플링이 필요합니다.

는이 블로그에서 꽤 잘 설명 것 : 나는 당신이 코멘트에서 언급 한 추가 매우 중요한 요구 사항을 추가하는 질문을 편집 한

http://gregable.com/2007/10/reservoir-sampling.html

+0

이것은 내가 정말로 필요로하는 것이다. 고맙습니다 – Nikita

0

정확한 픽업 요소 수에 대해 신경 쓰지 않는다면 쉬운 해결책은 파일을 읽고 고정 된 확률로 각 요소를 선택하는 것입니다.

정확한 숫자를 원한다면이 파일에있는 요소의 수를 전체 파일을 읽기 전에 원하는 요소 목록 (정수 목록)으로 계산 한 다음 파일을 읽어야합니다. 올바른 요소를 선택하십시오.

+0

매우 큰 배열이므로 두 번 읽는 데 많은 시간이 걸립니다. 주요 아이디어는 한 번 읽는 것입니다. 또한 나는 선택해야 할 요소의 exect 번호를 가지고있다. – Nikita