一个产生随机数的类
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
#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
相关文章推荐
- 让用户输入一个整数,与产生的随机数做比较,提示用户输入的正确与否。
- 产生一个随机数 将随机数保留两位小数
- C语言中如何产生一个随机数及其原理。
- 在一个整数区间里产生一组不重复的随机数
- Math对象产生随机数一个小应用
- 产生一个随机数
- 如何用SQL为每一行均产生一个随机数
- 产生一个int数组,随机向数组中插入1-100的随机数且不能重复
- 实际中常用的一个随机数产生器
- C语言——产生一个随机字符或者随机数
- 产生一个随机数的函数 范围[a,b]
- Java编程一个随机数产生模块代码分享
- 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
- ORACLE 如何产生一个随机数:DBMS_RANDOM
- 根据日期产生一个日期的串号加三个随机数
- JAVA的一个随机数产生模块
- 如何在linux中用命令产生一个范围内的随机数?
- ORACLE 如何产生一个随机数
- 编写一个产生随机数的库
- 如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,