Ich versuche zufällige Permutationen einer 80-stelligen Zeichenfolge in C zu generieren. Zu meiner Bestürzung fehlt das System, das ich arbeite strffry(). Was ist der beste Weg für mich, eine zufällige Permutation dieser Saite zu erzeugen? Da dies über ca. 100.000 Mal ist Leistung ein Problem.Randomize eine Zeichenfolge in C
Antwort
Verwenden Sie einfach die Open-Source-GLIBC-Implementierung, wie von Google Code gefunden.
char *
strfry (char *string)
{
static int init;
static struct random_data rdata;
size_t len, i;
if (!init)
{
static int state[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
rdata.state = NULL;
__initstate_r (time ((time_t *) NULL), state, 8, &rdata);
init = 1;
}
len = strlen (string);
for (i = 0; i < len; ++i)
{
int32_t j;
char c;
__random_r (&rdata, &j);
j %= len;
c = string[i];
string[i] = string[j];
string[j] = c;
}
return string;
}
Möglicherweise möchten Sie die GLIBC-spezifischen Datentypen in etwas allgemeineres ändern.
Dieser Code verwendet die Fisher-Yates shuffle, die tatsächlich sehr einfach zu implementieren ist, und sehr effizient.
Hohlraum gcry_randomize (unsigned char * buffer, size_t Länge, ENUM gcry_random_level Ebene)
Füllpuffer mit zufälligen Bytes Länge eine zufällige Qualität unter Verwendung von wie durch Ebene definiert.
Abgesehen davon, dass ich eine proprietäre Funktion bin, von der ich leider nicht gesagt habe, dass ich sie vermeiden möchte, passt das nicht wirklich zu meinem Zweck. Ich versuche, eine zufällige Permutation einer vorhandenen Zeichenfolge zu generieren - keine zufällige Zeichenfolge. Die Zeichenfrequenz ist wichtig. – Max
schafft einen 80-Line-Array, setzt ein Zeichen und eine Zufallszahl in jede Zeile des Arrays, dann sortiert das Array auf den Zufallszahlen.
String vom sortierten Array neu erstellen.
- 1. Randomize eine Haskell Liste
- 2. Randomize Folien in reveal.js
- 3. Randomize-Wort in VBA
- 4. Randomize Wert in Javascript
- 5. Analysiere eine Zeichenfolge in C#
- 6. Fehler eine Zeichenfolge in C
- 7. Eine Zeichenfolge in C++ analysieren
- 8. Format eine Zeichenfolge in C
- 9. Verfahrgeschwindigkeit eine Zeichenfolge in C++
- 10. pyspark: Randomize Zeilen in Datenrahmen
- 11. Randomize Buchstaben in einem Wort
- 12. Randomize CSS Regeln
- 13. Randomize Zahlen mit jQuery?
- 14. Randomize User Agent GeckoFX
- 15. Randomize TODO-Liste?
- 16. Randomize Zahlen in Lua ohne Wiederholungen
- 17. Wie spalte ich eine Zeichenfolge mit einer Zeichenfolge in C#
- 18. Setzen Sie eine Zeichenfolge in Bedingung (C++)
- 19. C libcurl Ausgabe in eine Zeichenfolge
- 20. outputing eine manipulierte Abfrage-Zeichenfolge in C#
- 21. Drehen Sie eine Zeichenfolge in C++?
- 22. C++ popen() 's Ausgabe in eine Zeichenfolge
- 23. Splitting eine Zeichenfolge Leerzeichen in C++
- 24. eine Zeichenfolge in C++ mit einem Nullbyte
- 25. Richtige Weg, eine Zeichenfolge in C
- 26. Wie eine bestimmte Zeichenfolge in C# parsen
- 27. Überprüfen Sie, ob eine Zeichenfolge in C++
- 28. Randomize Beobachtungen von Gruppen (Blöcke) ohne Ersatz
- 29. Konvertieren Zeichenfolge in Hex-Zeichenfolge in C#
- 30. konvertieren Sie eine Zeichenfolge in eine Variante in C++
Sie könnten das proprietäre Wort dort ändern, sonst könnte Stallman Sie mit seinem Katana bekommen. Ein richtiger Ersatz könnte GLIBC-spezifisch sein. –
Konrad, du bist ein Gentleman und ein Gelehrter! Ich habe versucht, Google Code zu suchen, aber ich suchte nach Dingen wie "zufällige Zeichenfolge in c" statt einfach "strfry". Vielen Dank! – Max
@Vinko: sehr wahr. ;-) –