Frage

Ich bin ein neu in C und verlor mit subj stecken. Ich kann String mit strtok geteilt, aber ich weiß nicht, wie ein zufälliges Token zu erhalten.

Danke.

War es hilfreich?

Lösung

Sie sie zweimal analysieren können, dann eine Zufallszahl erhalten und eine auswählen, die Sie auf dem zweiten Durchlauf des gleichen Zeichenfolge sammeln.

Oder Sie können es in einem einzigen Durchlauf tun, wenn Sie Reservoir Sampling .

Die Beherrschung Reservoir Sampling wird eine sehr nützliche Art und Weise C als eine Seite zu lernen, einige Mathe lernen! :)

Andere Tipps

Der folgende Pseudocode zeigt, wie ein Kandidat gleichmäßig unter den Token des Strings ausgewählt zurückzukehren:

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;

Dies ist ein Spezialfall von Algorithmus R von Abschnitt 3.4.2 von Band II von Knuth The Art of Computer Programming .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top