Zufallsbuchstabe - 26mal Ohne Wiederhohlung ausgeben
-
Hallo,
ich bin ein Anfänger wenn es um die programmieren mit C++ geht, deswegen brauche ich etwas Hilfe bei meinem Programm

#include<stdio.h> #include<cstdlib> #include<time.h> int main(void) { srand(time(NULL)); int rb = rand() % 25 + 65; // rb = Random Buchstabe for(int i=0;i <= 26;i++) { int rb = rand() % 25 + 65; printf("%c",rb); getchar(); } return 0; }Es geht darum, alle 26 Buchstaben des Alphabets in zufälliger Reihenfolge auszugeben (!ohne Wiederhohlungen!). Mein Problem hierbei ist, dass sich die Buchstaben wiederhohlen. Ich habe leider viel zu wenig Erfahrungen im Umgang mit C++

Ich hoffe ihr könnte mir helfen

BTW: Dieses Programm soll ich im Auftrag von meinen Vater für das Stadt, Land, Fluss spielen programmieren.
MFG xJusT4FuN
-
#include <iostream> #include <random> #include <algorithm> int main() { char arr[26]; std::iota(arr, arr + sizeof arr, 'A'); std::shuffle(arr, arr + sizeof arr, std::mt19937(std::random_device()())); std::cout.write(arr, sizeof arr); }
-
1. Mach eine Liste aller 26 Buchstaben.
2. N = 25
3. Zieh eine Zahl von 0 bis N.
4. Gib den Buchstaben an der gewürfelten Stelle aus
5. Tausche den Buchstaben mit dem N'ten Buchstaben in der Liste
6. Wenn N = 0 -> Fertig.
Ansonsten:
7. N = N - 1
8. Zurück zu 3.
-
Arcoth schrieb:
std::iota(arr, arr + sizeof arr, 'A');Wer garantiert dir, dass das funktioniert?
-
EBCDIC schrieb:
Arcoth schrieb:
std::iota(arr, arr + sizeof arr, 'A');Wer garantiert dir, dass das funktioniert?
Warum muss immer alles im Leben mit Garantien kommen, wenn's auch einfach nur funktionieren kann?
-
#thuglife
-
Ich würde es so machen:
#include <iostream> #include <random> #include <algorithm> #include <string> int main() { std::string str{"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; std::shuffle(str.begin(), str.end(), std::mt19937{std::random_device()()}); std::copy(str.begin(), str.end(),std::ostream_iterator<char>{std::cout," "}); }
-
Ja, ohne einen mit echter Entropie geseedeten Mersenne Twister wird das nichts mit dem shuffeln des Strings. :p
*scnr*