Ansi C : Newline으로 문자열을 분할하고 임의의 선을 얻는 방법
문제
나는 C를 처음 접했고 subj에 갇혔다. 나는 문자열을 분할 할 수 있습니다 strtok
그러나 나는 임의의 토큰을 얻는 방법을 모른다.
감사.
해결책
두 번 구문 분석 한 다음 무작위 숫자를 얻고 동일한 문자열의 두 번째 패스에서 수집하는 숫자를 선택할 수 있습니다.
또는 사용하면 단일 패스로 수행 할 수 있습니다. 저수지 샘플링.
저수지 샘플링을 마스터 링하는 수학을 배우는 측면으로 C를 학습하는 데 매우 유용한 방법이 될 것입니다! :)
다른 팁
다음 의사 코드는 문자열의 토큰 중에서 균일하게 선택된 후보를 반환하는 방법을 보여줍니다.
string result = null; int tokens = 0; while (true) { string candidate = next token; if (candidate does not exist) break; tokens = tokens + 1; if ((a random integer selected between 0 and tokens-1) == 0) result = token; } return result;
이것은 특별한 경우입니다 알고리즘 r Knuth 's의 Volume II의 3.4.2 절에서 컴퓨터 프로그래밍의 기술.
제휴하지 않습니다 StackOverflow