Zufallsgenerator teilt durch Null



  • Hallo!
    Ich habe auf folgende Weise einen Zufallszahlengenerator in mein Programm eingebaut:
    Leider bricht das Programm beim Durchlaufen manchmal (nicht immer) mit der Fehlermeldung "Division by zero" ab.
    1. Kann das sein, dass der Generator irgendwann durch Null teilen will?
    2. Wie kann man das beheben?
    Vielen Dank,
    beste Grüße!

    [cpp]

    /*Generierung von Zufallszahlen für die Bestimmung der Kostensätze*/

    srand( (unsigned) time( 0 ) ); /*zufällige Initialisierung des Zufallszahlengenerators*/

    for(i=0;i<daten[1];i++){
    c[i]=(rand()%5);
    }

    for(i=0;i<daten[1];i++){
    printf("\nc(%d)= %d",i,c[i]);
    }

    /*Bestimmung der Verfügbarkeitsperioden der Ressourcen*/
    srand( (unsigned) time( NULL ) );

    for(i=0;i<daten[1];i++){
    for(j=0;j<2;j++){
    PR[i][j]=0;
    }
    }

    for(i=0;i<daten[1];i++){
    printf("\n");
    for(j=0;j<2;j++){
    printf("PR(%d,%d)=%d ",i,j,PR[i][j]);
    }

    }

    PR[0][0]=1;
    PR[0][1]=PR[0][0]+(rand()%Tq+PR[0][0]);
    for(i=1;i<daten[1];i++){

    PR[i][0]=PR[i-1][1]+1;

    PR[i][1]=PR[i][0]+(rand()%(Tq-PR[i-1][1]));

    }
    PR[daten[1]-1][1]=Tq;

    printf("\n");

    for(i=0;i<daten[1];i++){
    for(j=0;j<2;j++){
    printf("%d ",PR[i][j]);
    }
    printf("\n");
    }



  • Nulltens: Es reicht, wenn du EINMAL srand() aufrufst.

    Erstens: rand() liefert keine Division durch Null, aber bei deinem Code bin ich mir nicht sicher - der Quotient bei rand()%(Tq-PR[i-1][1]) kann durchaus null werden (der Inhalt von PR[0][1] schwankt zwischen 2 und Tq+1 inklusive).

    PS: Und bitte beende geöffnete Code-Tags auch wieder 😉



  • CStoll schrieb:

    PS: Und bitte beende geöffnete Code-Tags auch wieder 😉

    HINT HINT HINT
    (Speziell für UNREGS, die wenn sie Mist verzapfen den nicht nachträglich korrigieren können):

    Es gibt hier einen VORSCHAU-Button! 😡



  • Danke! Und Entschuldigung!



  • Ich wußte doch, daß Bedarf dafür besteht: 🙂

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html



  • Marc++us schrieb:

    Ich wußte doch, daß Bedarf dafür besteht: 🙂

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-172876.html

    War ja klar, dass du nur in ANSI C schreibst um deinen Artikel zu loben 😉



  • Tim schrieb:

    War ja klar, dass du nur in ANSI C schreibst um deinen Artikel zu loben 😉

    bei dem die codebeispiele noch nicht mal in C sind...
    🙂


Anmelden zum Antworten