Mehrfache Ziehung einer Zufallszahl



  • Hi Cpp Community,
    Ich bin bin C++ Anfänger und brauche Hilfe. Ich bin gerade dabei ein Quiz zu schreiben. Die Fragen und die Antworten sind in zwei String Array's geschrieben. Diese werden dann mithilfe einer Variable der Vorher mit rand eine zufällige Zahl zugewiesen wurde, gezogen. Das Problem ist aber das wenn ich einer Variable 1 den Wert zugweisen habe wird er nicht nochmal generiert. Es wird also immer, auch wenn ich das Programm neu starte die gleiche frage und die gleichen Antwortmöglichkeiten gezogen.

    Anfang:
    
    ziehung = (rand() % 4) + 1;
    
    	cout << "DAS MILLIONEN-QUIZ" << endl << endl;
    	cout << "Beantworten sie die Folgende Frage" << endl;
    
    		cout << fragen[ziehung] << endl << endl;
    		cout << antworten[ziehung] << endl;
    ....
    goto Anfang;
    

    Meine frage ist jetzt, wie kann ich das Programm so umschreiben das immer eine neue Zahl der Ziehungsvariable zugewiesen wird.

    Lg max



  • vor rand einmalig srand aufrufen



  • Erstmal:
    goto = böse. Als Anfänger nie verwenden. Nie. Wenn du dich besser auskennst, findest du vielleicht den einen Sonderfall bei dem es sinnvoll ist, wahrscheinlich aber auch nicht. (Du suchst wohl eine while-Schleife)

    So, zu deiner eigentlichen Frage:
    Hast du den Zufallsgenerator auch brav mit einem (wechselnden) seed ausgestattet?
    Schaud dir mal srand an.



  • danke euch,
    ich habs geschafft:

    srand((unsigned) time(&t));
    	ziehung = (rand() % 3) +1;
    

    Jetzt gehts..

    Dake nochmal und lg Max


  • Mod

    Was soll denn der Cast da? Und was ist t?

    Falls du diese Fragen mit "Oh, äh, naja, hab ich so gesehen" beantworten musst: Programmieren ist nicht abschreiben! Du musst immer ganz genau wissen was du warum wie tust. Ein erster Schritt wäre, sich eine Referenz anzusehen (und verstehen!), sowie Typumwandlungsregeln zu lernen. Beides wichtige Grundtechniken, die man beherrschen muss.


Anmelden zum Antworten