Monte Carlo light



  • Hi! Ich will 100 gleichverteilte Zufallszahlen auf {1,..,20} erzeugen und (eigentlich) vom Programm prüfen lassen, ob jede Zahl mindestens zweimal aufgetreten ist. Ich will diese Simulation genau n mal durchführen und nach n=5,10,20,...,n die relative Häufigkeit dafür angeben, wie oft jede Zahl zweimal gezogen wurde. Ich stecke da noch ziemlich an Anfang fest..

    int main()
    {
    	int e;
    	double f[100];
    	for(e=1; e<101; e++)
    	{
    		f[e]=rand() %21; // die 100 Zufallszahlen zwisch 1 und 20..
    		if(f[e]=0)
    		{
    			f[e]=rand() %21;
    		}
    	}
    	std::sort(f[e],f[e]+100);
    }
    

    Ich bin 1. unzufrieden damit, dass ich die 0 nicht ganz ausschließen kann und auch damit, dass ich nur sortiere und dann 1000 arrays durchgehen müsste.... ich weiß aber auch nicht, wie ich das programmieren könnte.

    Auf Hilfe hoffend,
    Vicarious



  • mit rand()%20+1 kannst schon mal die null ausschließen



  • Hier mal wenig hilfe zum zählen,

    int main()
    {
        int zufalsZahlen[100];          // Zufalszahlen
        int anzahlDerZahlen[20];        // anzahl der jeweiligen Zahlen 1 bis 20
    
        for(int i=0;i<20;i++)           // Zahlen Zähler auf null setzen für alle 20 zahlen
        {
            anzahlDerZahlen[i]=0;
        }
    
        for(i=0; i<100; i++)  
        {
            zufalsZahlen[i] = rand()%20+1;          // die 100 Zufalszahlen zwisch 1 und 20 erzeugen
            anzahlDerZahlen[zufalsZahlen[i]-1]++;   // die 20 Zähler der Zahlen 1 bis 20 entsprechend setzen
        }
    
        for(i=0;i<20;i++)
        {
            printf("Anzahl der Zahl %d: %d\n",i+1,anzahlDerZahlen[i]); // Ausgabe der Anzahl der Zahlen 1 bis 20
        }
    
        getchar(); 
    }
    

    Du darfst auch nicht vergessen dass arrays bei Null anfangen und nicht bei 1


Anmelden zum Antworten