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:
- Was soll das machen (ein paar mehr Infos wären nett)
- 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 100Du 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