小张的世界
sysuzsxcu
全部博文(28)
2011年(1)
2010年(8)
2009年(19)
格伯纳
yumozhao
hbaidu
BetonArm
80626736
ITQIQI55
ewyel
yuemingy
hustxlj
分类: C/C++
2009-11-28 15:00:37
//RandomNumber.h
#ifndef RANDOMNUMBER_H_ #define RANDOMNUMBER_H_ class RandomNumber { public: RandomNumber(unsigned long s=0); virtual ~RandomNumber(); unsigned short Random(unsigned long n);//random number between [0,n) unsigned short Random(unsigned long m,unsigned n);//random number between [m,n] double fRandom(void); private: unsigned long randSeed;//Current seed }; #endif /*RANDOMNUMBER_H_*/
//RandomNumber.cpp
//
RandomNumber.cpp
#include "RandomNumber.h" #include <ctime> typedef const unsigned long Long; Long maxshort=65536L; Long multiplier=1194211693L; Long adder=12347L; RandomNumber::RandomNumber(unsigned long s) { if(0==s) { randSeed=time(NULL); } else { randSeed=s; } } RandomNumber::~RandomNumber() { } unsigned short RandomNumber::Random(unsigned long n) { randSeed=multiplier*randSeed+adder; return (unsigned short)((randSeed>>16)%n); } unsigned short RandomNumber::Random(unsigned long m,unsigned n) { if(m>n) { return -1; } if(m==n) { return m; } return Random(n-m+1)+m; } double RandomNumber::fRandom(void) { return Random(maxshort)/double(maxshort); }
上一篇:随机算法
下一篇:Ubuntu Php installation
登录 注册