Advertisement

Proper use of rand() ??

Started by May 20, 2001 10:13 PM
4 comments, last by OpenGLGuy 23 years, 8 months ago
Hey, What is the proper way to use the rand() command??
if(!You_Like_Game_Dev){ return Loser;}else{ return Cool;}
To generate a random number between 0 and 99:
int number = rand() % 100;
To generate a random float between 0 and 1:
float number = (float)rand() / RAND_MAX;

~~~~~~~~~~
Martee
http://www.csc.uvic.ca/~mdill
ReactOS - an Open-source operating system compatible with Windows NT apps and drivers
Advertisement
To generate numbers greater than randmax:


#define BigRand(x) ((rand ()*((x)/RANDMAX) + rand ())%(x))
Martee: rand() returns an interger value between 0 and RAND_MAX. To get a (pseudo) random value between 0 and 1 (both inclusive) you should write

  float fNumber = ((float)rand() / (float)(RAND_MAX + 1));  


Moreover, computing a random integer number between 0 and N as

  int nNumber = rand() % N;  


it somewhat wrong, since there are changes you are modifing the equi-probabilities of the resulting value. You should do something like

  float fNumber = ((float)rand() / (float)(RAND_MAX + 1));int nNumber = (int)(fNumber * (float)N);  


Slower but more accurate.



[home page] [e-mail]

---
"Lifting shadows off a dream once broken
She can turn a drop of water into an ocean"
---[home page] [[email=karmalaa@inwind.it]e-mail[/email]]
or better yet, staying with integers

#define RAND(__range) ((((long)rand ()) * (__range)) / (RAND_MAX+1))
How about negative numbers?

This topic is closed to new replies.

Advertisement