File: CRNG.h

package info (click to toggle)
spring 103.0%2Bdfsg2-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 43,720 kB
  • ctags: 63,685
  • sloc: cpp: 368,283; ansic: 33,988; python: 12,417; java: 12,203; awk: 5,879; sh: 1,846; xml: 655; perl: 405; php: 211; objc: 194; makefile: 77; sed: 2
file content (30 lines) | stat: -rw-r--r-- 603 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef RNG_HPP
#define RNG_HPP

#include <cstdlib>
#include <ctime>

#define FRAND_MAX float(RAND_MAX)

struct RNG {
	RNG() {
		srand(time(0));
	}

	/* random float in range [0, range] */
	/* (rand() can return RAND_MAX) */
	float RandFloat(float range = 1.0f) const {
		range = (range < 0.0f)? -range: range;
		return ((rand() / FRAND_MAX) * range);
	}
	/* random int in range [0, (-)range] */
	/* (rand() can return RAND_MAX) */
	int RandInt(int range = 1) const {
		return int((rand() / FRAND_MAX) * range);
	}
};

/* static const, so srand() only instantiated once */
const static RNG rng;

#endif