in c++ zufallszahlen ohne Dopplungen ...
-
Hi Leute bin neu hier und habe ein kleines Problemchen. Undzwar will ich in C++ Zufallszahlen generieren, aber es sollen keine doppelten zufallszahlen auftreten
Hier ist mein bisheriger quellcode dazu :int x = rand() % (h);
Also diese Anweisung ist in einer Zählschleife und soll mir immer andere Zufallszahlen ausgeben .
Wenn einer wüsste wie man das realisieren könnte wär ich sehr dankbar für eine Antwort.

achja "h" hab ich vorher auf 9 gesetzt . Also zufallszahlen von 0 bis 9 .
Mehr über X also .... hmm also es geht sich um folgendes: Ich habe 3 Vektoren mit in denen Datensätze drinstehen. Jetzt habe ich einen 4. Vektor erstellt dessen erste 5 elemente zufällige Datensäze aus dem 1. der 3 Vektoren enthaltensollen die Nächsten 5 aus dem 2. Vektor und die letzten 5 aus dem 3. Vektor. In den 4. Vektor soll hat per zufall jeweilige datensätze reingeschrieben werden ... ich hoffe man das verstehen . Deshalb diese zufallszahlengeneration ...wenn 2 gleiche zahlen kommen in den ersten 5 zuweisungen , dann hab ich 2 gleiche Datensätze drin , das will ich nicht .
So , für die anderen Tipps bin ich sehr dankbar
ich werd sie gleich ausprobieren 
Danke an alle
habe jetzt einfach ein int Array mit zahlen von 0 - 9 initialisiert und dann in einer for-schleife mit rand() gemischt .
-
http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
Falls du nur die Zahlen 0 bis und mit 8 (also 0 bis 9) zufällig geordnet haben möchtest, dann geht das auch mit random_shuffle (Achtung Troll)
std::array<int, 9> arr; int tmp=0; std::generate(arr.begin(), arr.end(), [&](){return tmp++;}); std::random_shuffle(arr.begin(), arr.end()); std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout, "\n"));
-
Dieser Artikel sollte dir weiterhelfen:
-
Feuerpinsel schrieb:
Also diese Anweisung ist in einer Zählschleife und soll mir immer andere Zufallszahlen ausgeben .
Wenn einer wüsste wie man das realisieren könnte wär ich sehr dankbar für eine Antwort.

achja "h" hab ich vorher auf 9 gesetzt . Also zufallszahlen von 0 bis 9 .
ganz einfach. ein integer array mit zahlen von 0 bis 9 initialisieren und dann per rand mischen.
dann kannst du 10 verschiedene zahlen aus dem array entnehmen.
-
xyz uu yeah schrieb:
Feuerpinsel schrieb:
Also diese Anweisung ist in einer Zählschleife und soll mir immer andere Zufallszahlen ausgeben .
Wenn einer wüsste wie man das realisieren könnte wär ich sehr dankbar für eine Antwort.

achja "h" hab ich vorher auf 9 gesetzt . Also zufallszahlen von 0 bis 9 .
ganz einfach. ein integer array mit zahlen von 0 bis 9 initialisieren und dann per rand mischen.
Wieso nicht
random_shuffle?
Das wurde, wie ein Vorposter schon geschildert hat, genau dafür entworfen.:xmas2:
-
Sone schrieb:
Wieso nicht
random_shuffle?Er hat ja nicht gesagt, wie gemischt wird
.
-
xyz uu yeah schrieb:
und dann per rand mischen.
Ja, wie denn? "per rand mischen" ist nicht so einfach wie es sich anhört. Dafür nimmt man entweder
random_shuffleoder man implementiert es mit Fisher–Yates, dazu siehe meinen Link.Danke Sone, dass du hier gepostet hast, jetzt kann ich deine Signatur quoten:
You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y.
Dieses Problem liegt hier nämlich vor. Um es als Ratschlag zu formulieren:
You want to do X, and you think Y is the best way of doing so. Instead of asking about Y, better ask about X.
Hier:
X=unbekannt (Array mischen? Lottozahlen ziehen?)
Y=rand()%h in Zählschleife.Also, Feuerpinsel: Bitte erzähle uns mehr über X.