一个简单的随机数生成算法实现(C++)
来源:互联网 发布:零基础学python第二版 编辑:程序博客网 时间:2024/05/16 12:31
#ifndef EASYRANDOM_INCLUDED
#define EASYRANDOM_INCLUDED
static const int A = 48271;
static const int M = 2147483647;
static const int Q = M/A ;
static const int R = M%A ;
class Random
...{
public :
explicit Random(int initialVal=1);
int RandomInt();
double Random0_1();
int RandomInt(int low,int high);
private :
int state;
};
Random::Random(int initialVal)
...{
if(initialVal < 0)
initialVal += M;
state = initialVal;
if(state==0)
state=1;
}
int Random::RandomInt()
...{
int tmpState = A*( state % Q ) - R * (state / Q);
if(tmpState > 0)
state = tmpState;
else
state = tmpState + M;
return state;
}
//生成0.0到1.0之间的随机小数
double Random::Random0_1()
...{
return (double)RandomInt()/M;
}
//生成low到high之间的随机整数
int Random::RandomInt(int low, int high)
...{
int range = high - low;
return low+RandomInt()%range;
}
#endif
#define EASYRANDOM_INCLUDED
static const int A = 48271;
static const int M = 2147483647;
static const int Q = M/A ;
static const int R = M%A ;
class Random
...{
public :
explicit Random(int initialVal=1);
int RandomInt();
double Random0_1();
int RandomInt(int low,int high);
private :
int state;
};
Random::Random(int initialVal)
...{
if(initialVal < 0)
initialVal += M;
state = initialVal;
if(state==0)
state=1;
}
int Random::RandomInt()
...{
int tmpState = A*( state % Q ) - R * (state / Q);
if(tmpState > 0)
state = tmpState;
else
state = tmpState + M;
return state;
}
//生成0.0到1.0之间的随机小数
double Random::Random0_1()
...{
return (double)RandomInt()/M;
}
//生成low到high之间的随机整数
int Random::RandomInt(int low, int high)
...{
int range = high - low;
return low+RandomInt()%range;
}
#endif
这些数的生成依赖于算法,不能算是真正的随机数,只能算是伪随机数。本例中的算法详情google 线性同余生成器。
ps.
没有关键的C代码插入方式,用C#的顶下先
- 一个简单的随机数生成算法实现(C++)
- 一个生成伪随机数的超级算法
- 一个生成伪随机数的超级算法
- java 语言实现的随机数生成算法
- java 语言实现的随机数生成算法
- 自定义算法实现随机数的生成
- 简单的随机数生成
- 一个伪随机数生成算法
- 一个伪随机数生成算法
- C语言中随机数的生成,以及简单猜数游戏的实现。
- 一个简单的生成随机数的小程序
- 随机生成不重复的随机数的简单算法
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 如何评价一个伪随机数生成算法的优劣
- 一个生成伪随机数的超级算法【转】
- 一个生成伪随机数的超级算法【转】
- 一步一步学DataGuard(6)物理standby之switchover
- 支持奥运,让世界听到我们的声音!
- 编程之美 - 读书笔记 - 烙饼问题与搜索树
- Double-Array Trie分词词典简述 [转]
- Javascript实现的自动验证函数
- 一个简单的随机数生成算法实现(C++)
- 网站论坛注册中常用的一种倒记时特效代码
- 一步一步学DataGuard(7)物理standby之failover
- 中文分词中的trie检索树实现
- 睡意袭来
- 一步一步学DataGuard(8)物理standby之高级管理1
- 内容拷贝增加版权信息的JavaScript代码
- 日文输入法的调用--日语输入及学习入门初步图解
- 一步一步学DataGuard(9)物理standby之高级管理2