W jaki sposób pomieszać litery danego stringa?

0

Nie mam pomysłu na wyświetlenie stringa w taki sposób, żeby litery które wchodzą w skład stringa były pomieszane.
Np. słowo tajemnica, żeby było wypisane na ekranie.
Skorzystałem, z jednego z plików który mam z losowania bez powtórzeń, i chciałem zastosować to do stringa, ale też nic nie wychodzi. Na samych for-ach wyświetlało mi litery wymieszane ale powtarzały się.
Obecny kod wygląda tak:

#include<iostream>
#include<string>
#include<cmath>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
	srand(time(NULL));
	string tekst="tajemnica";
	int ile_znakow;
	ile_znakow=tekst.length();
	bool powtorzenie;
	do{
for(int i=0; i<ile_znakow; i++){
	tekst[i]=(char)(rand()%ile_znakow);
	for(int j=0; j<i; j++){
		if(tekst[j]==tekst[i]){
			powtorzenie=true;
		}
	}
	}}
	while(powtorzenie);
for(int i=0; i<ile_znakow; i++){
	cout<<tekst[i];
}
	return 0;
}

Mógłby ktoś ewentualnie powiedzieć mi jak wymieszać zawartość tablicy tekst? Coś słyszałem o jakimś random shufle czy coś takiego, nie bardzo wiem jak to zastosować.

1
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
  {
   string tekst="tajemnica";
   srand(time(0));
   for(unsigned i=tekst.size();i>1;--i) swap(tekst[i-1],tekst[rand()%i]);
   cout<<tekst;
   return 0;
  }

Jest jeszcze shuffle od c++11

1 użytkowników online, w tym zalogowanych: 0, gości: 1