Zufallszahl



  • Mein Programm sieht eher so aus:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int i[20]={3,5,1,34,6,7,44,19,20,2,8,17,9,27,24,29,25,56,78,4};
    
    	for(int y=0;y<20;y++)
    	{
    		cout<<i[y]<<endl;
    	}
        return 0;
    }
    

    Und jetzt brauch ich per Zufall eine Zahl aus den möglichen 20!!

    MfG
    petr



  • Wo ist das Problem? Ich hab Dir code gepostet wie es geht.

    Also, streng mal Dein Hirn an



  • Das Beispiel von nix da liefert die Zufallzahlen von 0 bis 99, willst du Zufallzahlen aus einem Array mit 20 Elementen bekommst du die Zufallszahl durch rand () % 20;



  • Ich bekomme mehrere Fehlermeldungen:

    // nach Vorschlag von "nix da":
    error C2039: 'srand' : Ist kein Element von 'std'
    error C2039: 'rand' : Ist kein Element von 'std'
    
    // wenn namespace am Anfang definiert, Fehler beim Linkvorgang:
    error LNK2001: Nichtaufgeloestes externes Symbol __imp__timeGetTime@0
    fatal error LNK1120: 1 unaufgeloeste externe Verweise
    

    Nochwas: Brauche ich für rand() eine header??



  • Sorry, srand und rand sind im globalen Namespace, drum kein std:: sondern :: und die Sache mit timeGetTime, du musst noch eine lib linken sowie einen Header für diese "spezial"funktion einbinden.



  • nimm zur erstinitialisierung einfach nur time() aus <ctime>

    @nixda
    standard ist was anderes 😉 die lib kann er sich schenken *grins*

    long sek;
    
        // Zeit in Sekunden lesen:
        time( &sek); /*time: nimmt die systemtime: time_t time( time_t *timer );*/
         //
        srand((unsigned)sek);    // Zufallsgenerator initialisieren, setzt den Startpoint
    
        int zahl = (rand() % 20) + 1;//generiert eine Zufahlsnummer, mit modulo 20 kommen  werte zwischen 0 und 19 raus, dann wird + 1 gesetzt
    


  • @elise: Nicht so gütig sein. In der FAQ steht bereits ein sehr schöner Thread.

    Einfaches lesen hätte genügt.

    MfG SideWinder



  • na ja, bevor hier in c++ standard so eine komische lib eingebunden werden soll, greif ich doch lieber ein 😉



  • hrhr 😃

    MfG SideWinder



  • Nur als Anmerkung am Rand. (kleines Wortspiel 😃 )

    In Numerical Recipes in C: The Art of Scientific Computing
    (William H. Press, Brian P. Flannery, Saul A. Teukolsky,
    William T. Vetterling; New York: Cambridge University
    Press, 1990 (1st ed, p. 207)), the following comments are
    made:
    "If you want to generate a random integer between 1
    and 10, you should always do it by

    j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

    and never by anything resembling

    j=1+((int) (1000000.0*rand()) % 10);

    (which uses lower-order bits)."


Anmelden zum Antworten