您的位置:首页 > 其它

一个产生随机数的类

2008-10-09 12:00 253 查看
//RandomNumber.h
#ifndef RANDOM_NUMBER_
#define RANDOM_NUMBER_
#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);
unsigned short Random(unsigned long n);
double fRandom(void);
};
RandomNumber::RandomNumber(unsigned long s)
{
if(s == 0)
{
randSeed = time(0);
}
else
{
randSeed = s;
}
}
//return random interger 0 <= value <= n-1 < 65536
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed = multiplier * randSeed + adder;
return (unsigned short)((randSeed >> 16) % n);
}
//return (value in rang 0 ~ 65535) / 65535
double RandomNumber::fRandom(void)
{
return Random(maxshort)/double(maxshort);
}
#endif

//main.cpp
#include <iostream.h>
#include "RandomNumber.h"
void main()
{
RandomNumber rnd;
//generate 20 numbers range from 1 to 10;
for(int i=0; i<20; i++)
{
cout<<1+rnd.Random(10)<<" ";
}
cout<<endl;
}
本文出自 “0与1” 博客,请务必保留此出处http://didiw8899.blog.51cto.com/495319/104578
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: