Wie realisiere ich eine Funktion, die eine Zufallszahl zurückgibt(c++)?

2 Antworten

#include <rand>

#include <time.h>

int rndNumber(int min, int max)

{

srand((unsigned int)time(NULL));

int iResult=0;

do{

iResult=(rand()%max)+1;

}while(iResult <min);

return iResult ;

}


Sollte dein Problem lösen, kann man natürlich auch noch schöner machen, aber es sollte gehen ;-) 

J0T4T4  19.07.2015, 00:33

Hier wäre nochmal ein Weg ohne diesen unnötigen do-while loop:

/*Auf eine Überprüfung der Richtigkeit der Arumente wird mal aus Faulheit verzichtet, und zudem sollte der Weg klar sein...*/

iResult = (rand() % (max - min)) + min;

//Der Rest kann gleich bleiben


Bin mal ein paar Beispiele im Kopf durchgegangen, und der Weg sollte sogar auch mit negativen Zahlen funktionieren. Ist aber schon so spät, dass ich keine Garantie mehr geben kann ;)

0
DenizOA  19.07.2015, 00:37
@J0T4T4

Danke, die untere Schranke hab ich nur über das Do while reingebracht. Ist eben schon spät ;-) 

0
charles2520 
Fragesteller
 18.07.2015, 21:28

okay, aber dieses seltsame "Time" akzeptiert mein Compiler irgendwie nicht..

0
ceevee  18.07.2015, 21:45
@charles2520

Und was sagt dein Compiler, warum er es nicht akzeptiert?

0
charles2520 
Fragesteller
 18.07.2015, 23:56
@ceevee

er kennt es einfach nicht.. time_t würde funktionieren, aber es wird immer der gleiche Wert bei gleichen Grenzen ausgegeben...

0