Random Zahlen von 1-100 erstellen?

... komplette Frage anzeigen

2 Antworten

Du willst also genau 100 Zufallszahlen erzeugen, im Bereich von 1 bis 100, wobei jede einzelne dieser Zahlen nur ein einziges mal vorkommt? Habe ich das richtig verstanden?

Wenn ja, dann evtl. so:

#include <algorithm>
#include <iostream>
#include <numeric>
#include <random>

#include <cstdint>
#include <cstdlib>

int main(void) {
using namespace std;

constexpr uint32_t lower = 1;
constexpr uint32_t upper = 100;

constexpr uint32_t seed = 12345;

vector<uint32_t> nums(upper);

iota(nums.begin(), nums.end(), lower);
shuffle(nums.begin(), nums.end(), minstd_rand{seed});

for (uint32_t &i : nums) {
cout << i << ' ';
}
cout << endl;

return EXIT_SUCCESS;
}

Die entscheidenden drei Zeilen habe ich mal fett hervorgehoben. Im Übrigen benutzt man rand() und srand() unter C++ nicht. Das gilt als veraltet, ungenau und allgemein schlechter Still ... davon abgesehen, ist es Fehleranfällig im Hinblick auf Multithreading und Zukunftssicherheit. Ich rate dir dringenst, sich mal anzugucken, wie die Klassen in <random> funktionieren! ;)

Ich hoffe, obige Lösung ist dir elegant genug, da sie ohne while- und if-Konstrukte auskommt, und nur 3 Zeilen umfasst. ;)

Naja, viel Spaß damit und einen schönen Tag noch! :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Fuchsi2001
18.03.2016, 06:03

Danke für die sehr hilfreiche Antwort! Und ja du hast definitiv recht GF ist wirklich sehr verbuggt... vor allem wird großteils bei den Updates nur wieder ein button entfernt und ein anderer hinzugefügt....

1

Du könntest 100 beliebige Zufallszahlen generieren, sie den Zahlen von 1 bis 100 zuordnen und dann die Zufallszahlen sortieren. Über die Zuordnung hast du nun die Zahlen 1 bis 100 in zufälliger Reihenfolge.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Suboptimierer
17.03.2016, 16:28

Die brachiale Lösung ist natürlich, eine serielle Liste anzufertigen und immer dann eine Zufallszahl (1-100) anzuhängen, wenn sie bislang noch nicht in der Liste enthalten ist. 
Das machst du, bis die Liste 100 Elemente enthält.

Damit würdest du einfach "neu würfeln", wenn die gewürfelte Zahl bereits gewürfelt wurde.

0
Kommentar von TeeTier
18.03.2016, 04:57

Interessant. Ich habe die Fragestellung etwas anders interpretiert. Mal gucken wer am Ende richtig lag. :)

0

Was möchtest Du wissen?