rand() spuckt immer 41 aus...



  • rüdiger schrieb:

    @merker
    ne, randomize gibt es nicht.

    War ein Schnellschuss. Sorry.
    Werde mich bei Gelegenheit mal wieder mit unseren Vorgaben beschäftigen :

    PORTABILITY
    
               randomize    srand 
    
    DOS            X          X
    UNIX                      X
    WIN16          X          X
    WIN32          X          X
    ANSI C                    X        <- :-(
    ANSI C++       X          X
    OS/2                      X
    

    🙂



  • Ringo_Starr schrieb:

    rand() spuckt immer 41 aus

    Sollte das nicht 42 sein? *scnr*

    @merker
    Woher stammt denn die Tabelle? randomize gibt es in C++ zB auch nicht.



  • die Zufallszahlen sollten mit

    srand(time(0));
    

    initialisiert werden.

    Wenn immer mit der selben Zahl initialisiert wird, kommt auch immer das selbe raus(logisch).
    time(0) liefert den momentanen Zeitstempel und so wird nie der selbe Wert initialisiert



  • #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <time.h>
    
    int main()
    {
        srand(time(0));
        int superzahl = rand() % 1000;
        printf("%d", superzahl);
        getchar();
        return 0;
    }
    

    ... theoretisch...



  • Ein Computer kann sich ja keine Zahl einfach so "ausdenken", sondern braucht einen Wert, an dem er sich orientieren kann. Wie hier eben die Zeit 🙂



  • chille07 schrieb:

    die Zufallszahlen sollten mit

    srand(time(0));
    

    initialisiert werden.

    Wenn immer mit der selben Zahl initialisiert wird, kommt auch immer das selbe raus(logisch).
    time(0) liefert den momentanen Zeitstempel und so wird nie der selbe Wert initialisiert

    Ne, time ist nicht gut. Der Seed sollte möglichst zufällig sein, damit man gute Zufallszahlen bekommt. Also sollte man zB /dev/random oder /dev/urandom dafür hernehmen. Unter BSD/OSX/Linux gibt es extra sranddev oä dafür.



  • Kann ein C-Profi einem Java-Programmierer nicht einen C-Code hinklatschern. Ist das so schwer verlangt? 😃 Nicht für C++, sondern nur für C, wenn es derselbe is, Pardon.

    int a = (int)(Math.random() * x) + y;

    Für Superzahl zwischen 0 und 9: --> x = 10; y = 0;
    Für eine Zahl wischen 1 und 49: --> x = 49; < = 1;

    So einfach gehts unter Java.

    Einfach nur den Code hinschreiben... für C...

    Ringo_Starr



  • Ringo_Starr schrieb:

    Kann ein C-Profi einem Java-Programmierer nicht einen C-Code hinklatschern. Ist das so schwer verlangt? 😃 Nicht für C++, sondern nur für C, wenn es derselbe is, Pardon.

    Tuts auch ein hinflatschern, hm ?
    Die Cplusplusler würden dir vielleicht ne virtuelle-random-funktor-template-klasse schreiben, aber
    wenn du es richtig machen willst, dann siehe weiter unten.
    Und ja, es ist 'schwer verlangt', wenn es das nicht wäre, könntest du es selbst oder ? 😃 *scnr*

    flatsch:
    srand((unsigned int)time(NULL));
    int irand( int von, int bis )
    {
    double r = bis - von + 1;
    return von + (int)(r * rand()/(RAND_MAX+1.0));
    }



  • Werde den Code daheim mal testen, im Moment gehts gerade nicht, meine Freundin hat was gegen Programmieren 😃

    Mal ne Frage zu der getchar()-Methode: Muss ich die immer mitschleppen, damit mir meine Konsole nicht geschlossen wird??
    Oh mann, ich komm mir vor wie ein blutiger Anfänger und ich dachte der Umstieg von Java auf C sei ein Kinderspiel.... ;):(:D

    Ringo_Starr



  • bei mir kann ich das einstellen, rechtsklick und eigenschaften, haken raus bei automatisch schliessen 😉


Anmelden zum Antworten