一般都采用伪随机数的方法。伪随机数是由种子决定的数列。
一般的公式是 Xn = ( a * Xn-1 + c ) % m
很显然,一旦 Xo 确定,Xn 都确定了。这就是伪随机数本质。
举个例子:
#include<time.h>
const unsigned long maxshort=65536L;
const unsigned long multiplier=1194211693L;
const unsigned long adder=12345L;
class RandomNumber
{
private:
unsigned long randSeed;
public:
RandomNumber(unsigned long s=0){if (s==0) randSeed=time(0);else randSeed=s;}
unsigned short Random(unsigned long n); //产生0~n-1的随机整数
double fRandom(void); //产生0~1.0的随机实数
};
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed=multiplier*randSeed+adder;
return (unsigned short)((randSeed>>16)%n);
}
使用rand函数获得随机数。rand函数返回的随机数在0-RAND_MAX(32767)之间。
例子:
/* RAND.C: This program seeds the random-number generator
* with the time, then displays 10 random integers.
*/