Zufallsgenerator in C



  • hey!

    Bin neu hier. hoffe bin hier richtig und nicht der 6.000 noob der die gleiche Frage stellt^^

    also ich habe folgendes Programm geschrieben:

    #include <stdio.h>
    #include <time.h>
    #inckude <stdlib.h>
    
    int main()
    {
        int        iZahler;
        int        iWurfe;
        int        iAnzahl;
        int        iAugen;
        int        iZufallszahl;
    
        printf("Geben sie die Anzahal der Würfelversuche ein: ");
        scanf ("%d",iAnzahl);
    
        srand(time(0));
    
        iWurfe=1;
        iZahler=1
    
        while(iAnzahl>iZahler)
        {
             iWurfe=iWurfe+1;
             iZahler=iZahler+1;
    
             printf("Würfel durchlauf Nummer %d: \n",iWurfe);
             iZufallszahl=rand%5+1;
             iAugen=iZufallszahl;
    
             printf("Der Würfel zigt eine: %d",iZufallszahl);         
        }
    }
    

    er meckert jetzt das srand und rand nicht deklariert wären...
    wär spitze wenn mir jemand helfen könnte...



  • ho!
    dritte zeile, fünftes zeichen.

    mfg.



  • zeile 19 semikolon fehlt.
    redundanz ohne ende in der while schleife.
    der würfel zigt nicht, der zickt höchstens weil er nie eine 6 würfeln wird.
    emefge



  • ok danke soweit.

    den Tippfehler bei include habe ich einfach übersehen.

    printf("Würfel durchlauf Nummer %d: \n",iWurfe);
             iZufallszahl=rand%5+1;
             iAugen=iZufallszahl;
    

    was ist da den noch falsch?



  • Firefox64 schrieb:

    was ist da den noch falsch?

    Naja, Dein Zufall stimmt nicht. Wie heisst es mit RTFM und FAQ? Finger weg von dem Modulo- Mist!



  • unsere Lehrerin verlagt leider den Modolu-Operator^^



  • Firefox64 schrieb:

    was ist da den noch falsch?

    ist das ein sparwürfel`?
    überlege er sich bitte mal den maximalwert von rand%5+1
    naahaaa??!



  • hm also der minimale wert wäre doch 0+1 und der maximale wert 5+1 (also 1 und 6)
    oder täusch ich mich da?

    srr bin nen blutiger anfänger...



  • 5%5 = Rest der übrigbleibt wenn du 5 durch 5 teilst... das ist eher nicht 5 😉



  • Firefox64 schrieb:

    unsere Lehrerin verlagt leider den Modolu-Operator^^

    plus Ring- Küssen? Das ist objektiv betrachtet ziemlicher Vollmüll. Machn Printout, warum Du's anders gemacht hast und fertig der Käse.



  • pointercrash() schrieb:

    Firefox64 schrieb:

    was ist da den noch falsch?

    Naja, Dein Zufall stimmt nicht. Wie heisst es mit RTFM und FAQ? Finger weg von dem Modulo- Mist!

    Ach was, das ist doch blubberfuk um das modulo Ding.



  • Dazu interessant ist vielleicht auch das:
    http://eternallyconfuzzled.com/arts/jsw_art_rand.aspx



  • mich interessiert eher das:

    #define N 1000000
    #define QUOT(i) 1.0*stat[i]/N
    
    int main() 
    { 
        unsigned i = 0, stat[7] = {0};
    
    	srand(time(0)); 
    
    	while ( i++ < N )  
    		stat[ rand()%6 + 1 ]++;
    
    	printf ( "Gewuenschte Wahrscheinlicheit: %f\n", 1.0/6 );
    	printf (	"%f\n"
    				"%f\n"
    				"%f\n"
    				"%f\n"
    				"%f\n"
    				"%f\n", QUOT(1), QUOT(2), QUOT(3), QUOT(4), QUOT(5), QUOT(6) );
    	return 0;    
    }
    


  • danke an alle!

    Das Board ist echt super!

    habe den Code Jetzt Fertig!!!

    /* Autor:Nicolas Fischer
       Datum:10.11.09
       Programm:Würfelsimulator.
    */
    
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main()
    {
        int        iZahler;
                   iZahler=0;
        int        iWurfe;
                   iWurfe=0;
        int        iAnzahl;
        int        iAugen;
        int        iZufallszahl;
        double     dRelation1, dRelation2, dRelation3, dRelation4, dRelation5, dRelation6;
    
        printf("Geben sie die Anzahal der Würfelversuche ein: ");
        scanf ("%d",&iAnzahl);
    
        srand(time(0));
    
        while(iAnzahl>iZahler)
        {
             iWurfe=iWurfe+1;
             iZahler=iZahler+1;
    
             iZufallszahl=rand()%5+1;
             iAugen=iZufallszahl;
    
             switch(iZufallszahl)
             {
                    case 1: printf("Eins\n");
                            break;
                    case 2: printf("Zwei\n");
                            break;
                    case 3: printf("Drei\n");
                            break;
                    case 4: printf("Vier\n");
                            break;
                    case 5: printf("Funf\n");
                            break;
                    case 6: printf("Sechs\n");
    
             }
    
        }
    
        fflush(stdin);
        getchar();
    }
    

    Funktioniert einbant frei!



  • Firefox64 schrieb:

    danke an alle!

    Das Board ist echt super!

    habe den Code Jetzt Fertig!!!

    /* Autor:Nicolas Fischer
       Datum:10.11.09
       Programm:Würfelsimulator.
    */
    
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main()
    {
        int        iZahler;
                   iZahler=0;
        int        iWurfe;
                   iWurfe=0;
        int        iAnzahl;
        int        iAugen;
        int        iZufallszahl;
        double     dRelation1, dRelation2, dRelation3, dRelation4, dRelation5, dRelation6;
       
        printf("Geben sie die Anzahal der Würfelversuche ein: ");
        scanf ("%d",&iAnzahl);
        
        srand(time(0));
        
        
        
        
        while(iAnzahl>iZahler)
        {
             iWurfe=iWurfe+1;
             iZahler=iZahler+1;
             
             iZufallszahl=rand()%5+1;
             iAugen=iZufallszahl;
             
             switch(iZufallszahl)
             {
                    case 1: printf("Eins\n");
                            break;
                    case 2: printf("Zwei\n");
                            break;
                    case 3: printf("Drei\n");
                            break;
                    case 4: printf("Vier\n");
                            break;
                    case 5: printf("Funf\n");
                            break;
                    case 6: printf("Sechs\n");
                            
             }
    
        }
      
    
      
        fflush(stdin);
        getchar();
    }
    

    Funktioniert einbant frei!

    ich gebs auf 🙄



  • Du solltest unbedingt mehr Variablen benutzen! 😮


Log in to reply