Modulo und Zufallsgenerator.



  • Hallo zusammen,

    ich hab mir selbst nen Übrung einfallen lassen und einen kleinen zufalls generatro geschrieben, der mir nacheinander einen Buchstaben(A-Z) und eine Zahl(0-9) ausgibt.

    Also in etwa so

    A2H5J3K9....

    Code sieht so aus:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void){
    int i;
    int zahl;
    char c; 
    
    srand(time(NULL));
    for(i=0;i<5;i++){
    printf("%c%d",c=rand()%26+65,zahl=rand()%10+1);
    }  
    printf("\n");
        system("pause");
        return 0;
    }
    

    Jetzt versteh nur nicht ganz wie das mit dem Modulo funktioniert.
    Kann mir das evtl einer erklären.

    Irgendwie ist mir nicht ganz klar für was genau Modulo hier gebraucht wird.
    Mir ist klar das die 26 für alle Buchstaben von A bis Z steht und die 65 das A ist. Aber warum genau das benutzt wird ist mir nicht klar.

    Danke schonmal für die Antworten.

    mfg
    bethebe



  • Modulo gibt immer den Rest einer Division zurück:

    z.B.

    10 % 5 = 0 (weil 10 / 5 = 2)
    11 % 5 = 1 (weil 11 / 5 = 2 + 1/5)



  • Hey, danke.
    Mir war schon klar das Modulo den Rest einer Division ausgibt.

    Aber habe das Programm wohl "gecheckt" 🙂

    Egal von welcher Zahl ich den Modulo 26 Nehme das Ergbnis wird nicht Größer wie 26. Wenn ich dann das mit 65 addieren, komm ich auch max. bis zum "Z" im Ascii code. Sprich das Ergebnis liegt immer zwischen 26 und 90, wenn ich das richtig sehe.



  • rand()%26+65 gibt Ergebnisse zwischen 65 und 90! Weil 65 + Zufall(0-25).

    Edit: Übrigends Rand() erzeugt dir eine Zahl zwischen "0 und RAND_MAX" alles hier nachzulesen: http://www.cplusplus.com/reference/clibrary/cstdlib/rand/



  • ah, super.
    Danke für den Link, jetzt sind alle Unklarheiten beseitigt. 🙂


Anmelden zum Antworten