rand() in spezielen bereich



  • Hallo wie kann ich eine rand machen die zahlen in bereich von 10 - 100 und 0.1 - 0.9???. Ich habe mir so was vorgestelt für mein ersten problem rand%101 aber funkt nicht ganz, da ich auch zahlen von 1-9 hergeben kann!. Furs zweite Kann mir einer weiterhelfen?. 😞

    furs zweite das

    ouble RandomMaxOne(void)
    {
    	//dhlosh Metablhton
    	int Temp;
    //
    	Save(&Temp,ZERO);
    
    			//kurio Programma
    	do{
    		//Pernoume ena tixeo int
    		Save(&Temp,abs(rand()));//Temp=rand();
    		//oso to Temp einai 0 epanelabe
    	}while(!CheckZero(Temp));//Temp == 0
    
    	//epestrepse enan logo
    	return (Div(1,Temp));//1/Temp
    }
    

    funkt aber auch nicht.



  • Für Zahlen zwischen 10 - 100:

    int zufallszahl = 10 + (random() % 91);

    Für 0.1 - 0.9 erzeugst du dir Zufallszahlen zwischen 1 und 9, und teilst sie einfach durch 10 (als float).

    float zufallszahl = (1 + (random() % 9)) / 0.1f;

    Zum zweiten Problem:

    1. Was soll das machen (ein paar mehr Infos wären nett)
    2. woher hast du den Code? (die Kommentare sind so lustig)


  • %91 bzw. %9



  • wollte ich eben noch ändern, aber du warst schneller 😉



  • Oh sorry ich brauche 2 rand die folgendes ausgeben 0.1,0.2,...,1.9 und zweite rand 10,20,...,100.



  • Master User schrieb:

    Oh sorry ich brauche 2 rand die folgendes ausgeben 0.1,0.2,...,1.9 und zweite rand 10,20,...,100.

    So langsam wird es IMHO Zeit, dass du das System kapierst. Wir können dir doch nicht ewig das Fläschchen geben.



  • Also mir sagte man immer, dass bei rand() die niedrigerwertigen Bits "weniger zufällig" sind als die höherwertigen. Aus diesem Grund sollte man kein Modulo benutzen.

    Für nen integer zwischen 1 und 20 könnte mans auch so machen

    int random = 1 + (int)(20.0*rand()/(RAND_MAX+1.0));
    

    Weiß allerdings nicht, ob sich heutzutage die Algorithmen weiterentwickelt haben und "zufälliger" geworden sind.



  • @MFK
    Der Meinung bin ich auch.

    @Master User
    Es wäre wirklich cool, wenn du mal ein paar Satzzeichen sowie Groß- und Kleinschreibung benutzt. Damit liest es sich einfach besser.

    So, nun nochmal das "System" zum mitmeißeln:

    random() % 101
    - generiert eine Zufallszahl zwischen 0 und 100

    Du willst aber bei 10 starten. Das heißt, du addierst 10 dazu und hebst sozusagen den Zahlenbereich an:
    10 + (random() % 101)

    Das gibt dir Zahlen zwischen 0+10 und 100+10, also zwischen 10 und 110.
    110 sind dir aber zuviel, deswegen nimmst du:
    10 + (random() % 91)

    Denn das generiert dir Zahlen zwischen 0+10 und 90+10, also dein gewünschter Bereich zwischen 10 und 100. 👍

    Wenn du nun Gelitkommazahlen zwischen 0.1 und 2.0 haben möchtest, dann generierst du dir Ganzzahlen zwischen 1 und 20 und teilst sie durch eine Gleitkommazahl, nämlich 10:

    float zufallszahl = (1 + (random() % 20)) / 10.0f;
    


  • 😃 😃 😃
    Man so leicht ist das system, jesus maria und josef dazu!.



  • alternativ kann man auch hier: http://cplus.about.com/od/advancedtutorials/l/aa041303a.htm nachlesen


Anmelden zum Antworten