Zufallszahl mit rand Funktion

Hallo!
Ich muss ein Programm schreiben, wo eine Zufallszahl mit Hilfe der rand Funktion erzeugt werden muss. Dabei soll festgelegt werden können, in welchem Bereich sich die Zufallszahl befindet.
Wie kann ich das machen?

Meine Funktion dazu sieht bisher so aus:

/*Erzeugen der Zufallszahl*/
for(i=0;i

Auch hallo.

Dazu definiert man sich eine globale Variable namens ‚untere‘ und stellt diese hinter die ‚+1‘

/*Erzeugen der Zufallszahl*/
main()
{
int untere = 12; //12 als Beispiel :wink:
for(i=0;i

Also irgendwie kommen da bei mir dann immernoch Zahlen raus, die nicht innerhalb der Grenzen liegen…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!
Ich muss ein Programm schreiben, wo eine Zufallszahl mit Hilfe
der rand Funktion erzeugt werden muss. Dabei soll festgelegt
werden können, in welchem Bereich sich die Zufallszahl
befindet.

Hach ja, richtige Dokumentation ist was tolles. Aus der rand()-manpage:

The rand() function returns a pseudo-random integer between 0 and RAND_MAX.

[…]

In Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 1992 (2nd ed., p. 277)), the following comments are made:

"If you want to generate a random integer between 1 and 10, you should always do it by using high-order bits, as in

j=1+(int) (10.0\*rand()/(RAND\_MAX+1.0));

and never by anything resembling

j=1+(rand() % 10);

(which uses lower-order bits)."

Hm, danke für die Hilfe, aber damit fang ich leider nichts an, bin ziemlicher C Neuling, vielleicht liegt es daran…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,
versuchs mal mit:
double x;
x = rand() / MAX_VALUE;/* dadurch erhälst du eine ZZ zwischen 0 und 1 */
x = x * (obere_schranke - untere_schranke) + untere_schranke;

hi,
versuchs mal mit:
double x;
x = rand() / MAX_VALUE;/* dadurch erhälst du eine ZZ zwischen
0 und 1 */

Denk da nochmal gründlich drüber nach. rand() liefert einen integer-Wert zwischen 0 und RAND_MAX, MAX_VALUE ist auch ein integer. Also bewirkst du mit dem Diviso-Operator, dass du entweder 0 oder 1 erzeugst (wobei die 1 extrem unwahrscheinlich ist). Korrekterweise sollte es heissen:

x = (double)rand()/(double)MAX_VALUE

was auch immer MAX_VALUE ist.

stimmt, da hast du Recht. Da war ich wohl etwas zu schnell :wink:
==>
(int)(((double)rand() / RAND_MAX) * (upper_bound + 1 - lower_bound) + lower_bound);