Name generieren



  • 2 kleine Denkanstöße:

    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <ctime>
    using namespace std; 
    
    main (int argc, char *argv[]) {
       // Variante1 für kurze Zeichenfolgen
       string s = "1234567890";
       cout << s << endl;
       random_shuffle (s.begin(), s.end());   
       cout << s << endl;
    
       // Variante2
       const int anzahlZeichen = 100;
       srand(time(NULL));
       string s2;
    
       for(int i=0; i < anzahlZeichen; i++) {
          s2 += static_cast<char>(rand() % 26 + 97);
       }
       cout << "------------" << endl;
       cout << s2;
    
       cin.get();
    }
    


  • Jede Zahl hat einen ASCII-Wert:
    http://www.asciitable.com/

    Du erstellt Zufallszahlen von dem ASCII-Wert von A bis z (nicht bis a, wie ich es gesagt habe). Also von 65 - 122 (ASCII-Werte der Buchstaben).
    Und das wandelst du in char um und hängst es jedes Mal an einen String an bis die Schleife zu Ende ist.

    Code kann ich dir nicht posten, da ich in Java programmiere.

    Liebe Grüße
    Real



  • Real schrieb:

    Du erstellt Zufallszahlen von dem ASCII-Wert von A bis z (nicht bis a, wie ich es gesagt habe). Also von 65 - 122 (ASCII-Werte der Buchstaben).

    Nur blöd, dass in diesem Intervall Zeichen liegen, die in Windowsdateinamen garnicht erlaubt sind. 😉



  • juhu dank dir interpreter

    wie kann ich machen das die Variable als name gegolten wird
    system("ipconfig > c:\\s2.txt");
    wie kann ich hier betonnen das s2 die variable ist mit ( oder <<



  • interpreter schrieb:

    Real schrieb:

    Du erstellt Zufallszahlen von dem ASCII-Wert von A bis z (nicht bis a, wie ich es gesagt habe). Also von 65 - 122 (ASCII-Werte der Buchstaben).

    Nur blöd, dass in diesem Intervall Zeichen liegen, die in Windowsdateinamen garnicht erlaubt sind. 😉

    Oh, dann beschränkt man sich eben auf Klein- oder Großbuchstaben.

    Liebe Grüße
    Real



  • Real schrieb:

    Oh, dann beschränkt man sich eben auf Klein- oder Großbuchstaben.

    Nein, der Ansatz von interpreter ist wesentlich besser.



  • hamster schrieb:

    juhu dank dir interpreter

    wie kann ich machen das die Variable als name gegolten wird
    system("ipconfig > c:\\s2.txt");
    wie kann ich hier betonnen das s2 die variable ist mit ( oder <<

    string s = "ipconfig > C:\\";
    // Dateinamen generieren (in s2)
    s+=s2+".txt";
    system(s.c_str());
    


  • nman schrieb:

    Real schrieb:

    Oh, dann beschränkt man sich eben auf Klein- oder Großbuchstaben.

    Nein, der Ansatz von interpreter ist wesentlich besser.

    Was macht es denn?
    Ich versteh leider weder C noch C++.

    Liebe Grüße
    Real



  • Hi!

    1. Verfahren:
    random_shuffle vermischt einen Bereich von Iteratorposition Anfang bis ausschließlich Iteratorposition ende. Iteratoren sind vergleichbar mit Zeigern (gehe davon aus das du weißt was Zeiger sind). begin zeigt also auf den Anfang und End zeigt hinter das Ende (in diesem Fall hinter das letzte Zeichen). Die Zeichenkette von s ist dann völlig verdreht.

    2. Verfahren:
    rand liefert eine Zufallszahl (In diesem Fall Zahlen von 0-25 auf die dann 97 addiert wird). Durch srand wird der Zufallszahlengenerator initialisiert. In diesem Fall mit der aktuellen Uhrzeit. Den Rest kannst du dir selbst erklären, da du dort nur einen Cast und eine Schleife hast.

    Code-Hacker



  • Die hier angesprochenen Algorithmen bringen nur zufällige Folgen von Buchstaben hervor. Das heisst, es entstehen meistens unbrauchbare Namen, die man oft nicht aussprechen kann.
    Es gibt jedoch auch Möglichkeiten "realistischere" Namen zu generieren. Dabei wird oft aus einer Ausgangsdatei herausgelesen wie wahrscheinlich es ist dass ein bestimmter Buchstabe auf einen anderen folgt. So wird wahrscheinlich nicht oft ein r auf ein q folgen, aber im deutschen sehr oft z.B. ein h auf ein c.
    Hier habe ich einen Link zu einem einfachen Tutorial, das das gut erklärt.
    http://3d.diehlsworld.de/namen/index.htm



  • supi tanks 🙂

    und noch eine kleine dumme frage ist die letze 😉

    bei einem

    system ("move s2");

    // kann ich das so benutzen ne oder glaube nicht das dos versteht das s2 die variable ist oder ?

    system ("cmd");



  • hamster schrieb:

    system ("move s2");

    // kann ich das so benutzen ne oder glaube nicht das dos versteht das s2 die variable ist oder ?

    Nein, eindeutig nicht, siehe dazu auch den letzten Thread auf der ersten Seite (den von interpreter).

    btw, move braucht meines Erachtens normalerweise mehr als ein Argument, hm? 😉



  • vielleicht so

    string s = "ipconfig > C:\";
    // Dateinamen generieren (in s2)
    s+=s2+".txt";
    s+="move s2 c:\\test"
    system(s.c_str());



  • oder so s = "move"; s+=s2; s+=" C:\\test"; system (s.c_str());


Anmelden zum Antworten