АНСИ С:Как разделить строку по новой строке и получить случайную строку

StackOverflow https://stackoverflow.com/questions/2217641

  •  19-09-2019
  •  | 
  •  

Вопрос

Я новичок в 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;

Это частный случай Алгоритм Р из раздела 3.4.2 тома II книги Кнута Искусство компьютерного программирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top