2016-11-14 4 views
1

Ich erstelle ein kleines Spiel, in dem der Benutzer Hinweise (Zeichen einer Zeichenkette) hat, um das Wort einer Zeichenkette zu erraten. Ich habe den Code, um jedes einzelne Zeichen der Zeichenfolge zu sehen, aber ist es möglich, dass ich diese zufällig ausgedruckten Zeichen sehen kann?Drucken Sie jedes Zeichen zufällig aus

string str("TEST"); 
for (int i = 0; i < str.size(); i++){ 
cout <<" "<< str[i]; 

output: TEST gewünschten Probenausgang: ETST

+4

Haben Sie 'std :: shuffle' überprüft? – Arunmu

+1

Sie möchten wahrscheinlich überprüfen, dass Ihr Shuffle mehr als das erste und letzte "T" vertauscht hat. Mit anderen Worten, mischen Sie, bis sich Ihr gemischtes Wort von der Eingabe unterscheidet. – MSalters

Antwort

2

Verwenden random_shuffle auf der Saite:

random_shuffle(str.begin(), str.end()); 

Edits: C++ 11 ab verwenden:

auto engine = std::default_random_engine{}; 
shuffle (begin(str), end(str), engine); 
+1

'random_shuffle' ist veraltet von C++ 14 und wird von C++ 17 entfernt werden kidding – Danh

+0

Oh Danke @Danh für die Info. –

+0

Richtige Idee, obwohl. – user4581301

0

Verwenden Sie den folgenden Code, um die Buchstaben nach dem Zufallsprinzip zu generieren.

const int stl = str.size(); 
    int stl2 = stl; 
    while (stl2 >= 0) 
    { 
     int r = rand() % stl; 
     if (str[r] != '0') 
     { 
      cout<<" "<<str[r]; 
      str[r] = '0'; 
      stl2--; 
     } 
    } 

Dieser Code generiert im Grunde die Zufallszahl basierend auf der Größe der Zeichenfolge und druckt dann das Zeichen an dieser bestimmten Position der Zeichenfolge. Um das erneute Drucken von bereits gedruckten Zeichen zu vermeiden, habe ich das gedruckte Zeichen in "0" umgewandelt, damit beim nächsten Mal die gleiche Positionsnummer generiert wird, wird geprüft, ob das Zeichen "0" ist oder nicht.

Wenn Sie die ursprüngliche Zeichenfolge beibehalten müssen, können Sie die Zeichenfolge in eine andere Variable kopieren und im Code verwenden.

Hinweis: Es wird angenommen, dass die Zeichenfolge nur alphabetische Zeichen enthält. Um eine Wiederholung zu vermeiden, wird daher "0" verwendet. Wenn Ihre Zeichenfolge Zahlen enthalten kann, können Sie für Vergleichszwecke ein anderes Zeichen verwenden

Verwandte Themen