Neuling sucht richtigen Zufallsgenerator
-
Hi,
bin noch neu im Forum, hoffe das is das richtige Forum für das Thema.
Ich hab Grund kenntnisse in C++ aber halt noch keine Erfahrung drum weiß ich
nicht so richtig wie ich mein Problem am besten löse. Vielleicht kann mir einer
helfen
Ich will sowas wie ein Gehirntrainer machen. Es sollen nach einander
Zufallszahlen angezeigt werden erst 3 stellig dann 4 stellig dan 5,6,7,8.
Der Spieler muss sie richtig wiedergeben. Hab schon n bischen mit rand()
rumgedölmert aber wenn ich über ne 4 stellige Zahl komme sind oft gleiche
stellen drin z.B. 000. Diese sind ja sehr einfach zu merken...
Zudem weiß ich nicht ob man am besten n Array nimm oder n String, da man die
Zahlen ja auch mit den Eingaben vom Spieler vergleichen muss damit man weis ob
es richtig ist.Wäre sehr nett wenn ihr mir da n paar Denkanstöße geben könntet.
Danke
MfG He4DcR4Sh
-
Da gibt es einen Artikel zu im Magazin, ganz unten...

http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html
-
while(...) { srand(time(0)); i = rand(); }
-
guter Tipp schrieb:
while(...) { srand(time(0)); i = rand(); }Und was passiert, wenn mit srand mehrmals der gleiche seed gesetzt wird?
Richtig, man erhält die gleichen Zufallszahlen, da sie aus dem gleichen seed erzeugt werden.Es wäre sinnvoller, std::srand(std::time(NULL)) nur einmal im Programm aufzurufen.
-
Nabend!
Erstma vielen dank für eure Antworten

Der Link oben hilft mir schonmal weiter eine möglichst gut geeignete Zufallszahl
zu finden.
Schreibe ich da dann meine Zufallszahlen in Arrays ? Kann man eine
Schleife bauen die nach und nach die Array Stellen mit Zufallszahl füllt ?
Danke
MfG He4DcR4Sh
-
He4DcR4Sh schrieb:
Schreibe ich da dann meine Zufallszahlen in Arrays ?
das kannst du machen ^^
He4DcR4Sh schrieb:
Kann man eine
Schleife bauen die nach und nach die Array Stellen mit Zufallszahl füllt ?ja kann man
const int MAX_ELEM = 10; int myarr[MAX_ELEM]; for(int i=0; i<MAX_ELEM; ++i) { myarr[i] = rand(); }oder eleganter
std::vector<int> myvec; for(int i=0; i<10; ++i) { myvec.push_back(rand()); }
-
oder noch eleganter:
std::srand( static_cast< unsigned int >( time( 0 ) ) ); std::vector< int > foo( 10 ); for( std::vector< int >::iterator i = foo.begin( ); i != foo.end( ); ++i ) { *i = std::rand( ); }
greetz, Swordfish
-
Da geht aber noch was:
std::generate (foo.begin (), foo.end (), std::rand);
-
The-Kenny schrieb:
guter Tipp schrieb:
while(...) { srand(time(0)); i = rand(); }Und was passiert, wenn mit srand mehrmals der gleiche seed gesetzt wird?
Richtig, man erhält die gleichen Zufallszahlen, da sie aus dem gleichen seed erzeugt werden.Es wäre sinnvoller, std::srand(std::time(NULL)) nur einmal im Programm aufzurufen.
Falsch, -100 Punkte!
-
@.filmor: *Arrrrggrr* Danke, jetzt weiß ich, was ich gesucht habe

@SP: <°((((>< und troll dich...greetz, Swordfish
-
Nabend vielen vielen Dank für die guten Beispiele schaun alle super aus

Ich versteh zwar nur das erste von Xantus, die vectoren raff ich noch nich muss
ich mich ma reinlesen. Mal ne dumme frage ich brauch ma um die 10 Zahlen alle mit
verschiedener Länge. Die Erste mit 3 Stellen, 2te mit 4, dann mit 5 usw.
Wie ich das da raus lese sind die dann alle 10 Stellig, oder macht man sich einfach
10 Zufalls zahlen alle mit 10 Stellen und drückt die dann in die arrays mit weniger
Stellen?Vielen Danke nochma.
MfG He4DcR4Sh
-
modulo