문제

나는 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 절에서 컴퓨터 프로그래밍의 기술.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top