随机数生成类C++源码
2004-10-14 10:33
495 查看
#include <iostream>
#include <time.h>
using namespace std;
class randomNumber
{
public:
randomNumber(long s = 0);
long random();
long random(long n);
double frandom();
private:
static const long A;
static const long M;
static const long Q;
static const long R;
long seed;
};
const long randomNumber::A = 48271;
const long randomNumber::M = 2147483647;
const long randomNumber::Q = M / A;
const long randomNumber::R = M % A;
randomNumber::randomNumber(long s)
{
if (s < 0)
s = 0;
if (s == 0)
{
long t_time = time(NULL);
t_time *= t_time;
if (t_time > 0)
s = t_time ^ 0x5EECE66DL;
else if (t_time < 0)
s = (t_time & 0x7fffffff) ^ 0x5EECE66DL;
else
s = 0x5EECE66DL;
}
seed = s;
}
long randomNumber::random()
{
long tmpSeed = A * ( seed % Q ) - R * ( seed / Q );
if( tmpSeed >= 0 )
seed = tmpSeed;
else
seed = tmpSeed + M;
return seed;
}
long randomNumber::random(long n)
{
double fraction = double(random())/double(M);
return int(fraction * n);
}
double randomNumber::frandom()
{
return double(random())/double(M);
}
#include <time.h>
using namespace std;
class randomNumber
{
public:
randomNumber(long s = 0);
long random();
long random(long n);
double frandom();
private:
static const long A;
static const long M;
static const long Q;
static const long R;
long seed;
};
const long randomNumber::A = 48271;
const long randomNumber::M = 2147483647;
const long randomNumber::Q = M / A;
const long randomNumber::R = M % A;
randomNumber::randomNumber(long s)
{
if (s < 0)
s = 0;
if (s == 0)
{
long t_time = time(NULL);
t_time *= t_time;
if (t_time > 0)
s = t_time ^ 0x5EECE66DL;
else if (t_time < 0)
s = (t_time & 0x7fffffff) ^ 0x5EECE66DL;
else
s = 0x5EECE66DL;
}
seed = s;
}
long randomNumber::random()
{
long tmpSeed = A * ( seed % Q ) - R * ( seed / Q );
if( tmpSeed >= 0 )
seed = tmpSeed;
else
seed = tmpSeed + M;
return seed;
}
long randomNumber::random(long n)
{
double fraction = double(random())/double(M);
return int(fraction * n);
}
double randomNumber::frandom()
{
return double(random())/double(M);
}
相关文章推荐
- 看到了一个 蒙特卡洛方法 随机数得出 圆周率的c++ 源码
- C++ Standard Stl -- SGI STL源码学习笔记(03) STL中的模板编译期检查与偏特化编译期检查
- Windows Socket安全通信(附C++源码)
- 提供音频变速不变调组件或源码(C++)
- LLC(Locality-constrained Linear Coding)基于OpenCV的C++源码实现
- 生成随机数源代码-C++
- 基于Windows Socket的安全通信(C++实现,附源码)
- c++stl vector源码简析
- 【语言-C++】MD5加密算法 32bit 16bit 源码
- 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址
- 较高人工智能的人机博弈程序实现(多个算法结合)含C++源码
- 关于C++随机数生成中种子值设置的一点总结,解决随机数序列重复问题
- c++与随机数(三)
- C/C++ 生成[X,Y]内的随机数
- 自用C++实验课源码
- 阅读C++源码必备
- [网络收集]C++随机数生成方法
- [置顶] quickcocos2dx修改c++源码,并且导出给lua使用。
- [图形学] B样条曲线 - 原理和C++实现的演示程序(附源码)
- 精品手游《大主宰》全套源码+工具源码,c++源码,解压后3.12G