Ich habe einen Vektor, den ich mit Zufallszahlen füllen will. Ich laufe jedoch immer wieder auf ein Problem ein, dass der Vektor jedes Mal, wenn ich ihn ausführe, meistens 0 ausgibt (er sollte niemals eine 0 ausgeben). Was mache ich falsch in meinem unten geschriebenen Code, damit es 0 ausgibt (es gibt 0 mehr als jede andere Zahl aus):
%Vor%Ich bin ein Anfänger und habe seit langer Zeit nicht viel C ++ programmiert, deshalb bin ich mir nicht sicher, was meinen Code ausfällt. Wenn jemand erklären könnte, was ich falsch gemacht habe, würde es sehr geschätzt werden.
Sie können den std :: generate-Algorithmus verwenden, um einen Vektor aus n Elementen mit Zufallszahlen zu füllen.
In modernen C ++ wird empfohlen, keine zeitbasierten Seeds und std :: rand zu verwenden, sondern stattdessen random_device zu verwenden, um einen Seed zu generieren. Bei einer softwarebasierten Engine müssen Sie immer die Engine und die Verteilung angeben. Lesen Sie mehr ..
%Vor%Wenn Sie die Elemente eines Bereichs in zufälliger Reihenfolge neu anordnen möchten:
%Vor% Ich füge nur meine 2 Cent hinzu ... Diese Antwort ist ähnlich wie die von Marko Tunjic , aber das tut es nicht verwende stattdessen std::rand
von C, aber C ++ 11 features.
Es erlaubt Ihnen, die Verteilung Ihrer Wahl zu verwenden, uniform_int_distribution
im folgenden Beispiel.
Es ist nicht klar, was Sie mit der Schleife zu tun versuchen, der Code erstellt einen Vektor zufälliger Größe, der mit Zufallszahlen gefüllt ist.
Sie geben "myVector [b]" aus, aber "b" ist der zufällige Wert, nicht der Index der gerade hinzugefügten Zahl. Du könntest einfach:
%Vor%Aber wirklich sollten Sie den Vektor Größe und Zugriff nur per Index.
%Vor%