Fülle einen Vektor mit Zufallszahlen c ++

8

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.

    
Valrok 02.02.2014, 21:38
quelle

7 Antworten

6

Sie rufen den falschen Index in Ihrem Vektor auf

Versuch es:

%Vor%

Andernfalls riskieren Sie, dass Sie für die ersten 20 Iterationen das Ende des Eckpunkts verlassen.

Sie können auch .back () auf Ihrem Vektor aufrufen, um das letzte Element zu erhalten der Vektor.

    
Serdalis 02.02.2014, 21:41
quelle
44

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%     
Marko Tunjic 17.04.2014 21:26
quelle
4

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.

%Vor%     
Marek Kurdej 01.10.2015 12:27
quelle
2

Sie rufen den falschen Index in Ihrem Vektor auf

%Vor%     
Khalil Ismail 02.02.2014 21:44
quelle
2

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%     
Sanjaya R 02.02.2014 21:53
quelle
0
%Vor%     
Giroud Vren 03.01.2016 14:11
quelle
-1
%Vor%

sollte es sein: cout << myVector[i];

    
Tony Lim 02.02.2014 22:03
quelle

Tags und Links