随机化算法——随机数类代码
来源:互联网 发布:按键精灵 数组直接赋值 编辑:程序博客网 时间:2024/06/05 09:43
一、随机数
随机数在概率算法设计中扮演着十分重要的角色。在现实计算机上无法产生真正的随机数,因此在概率算法中使用的随机数都是一定程度上随机的,即伪随机数。
线性同余法是产生伪随机数的最常用的方法。由线性同余法产生的随机序列a0,a1,…,an满足
其中b >= 0,c >= 0,d <= m。d称为该随机序列的种子。如何选取该方法中的常数b、c和m直接关系到所产生的随机序列的随机性能。这是随机性理论研究的内容,已超出本书讨论的范围。从直观上看,m应取得充分大,因此可取m为机器大数,另外应取gcd(m, b) = 1,因此可取b为一素数。
二、源代码
//RandomNumber.h
const unsigned long maxshort = 65535L;const unsigned long multiplier = 1194211693L;const unsigned long adder = 12345L;#ifndef RANDOMNUMBER_H_INCLUDED#define RANDOMNUMBER_H_INCLUDEDclass RandomNumber{private: unsigned long randSeed;public: // 构造函数,默认值0表示由系统自动产生种子 RandomNumber(unsigned long s = 0); // 产生0 ~ n-1之间的随机整数 unsigned short Random(unsigned long n); // 产生[0, 1) 之间的随机实数 double fRandom();};#endif // RANDOMNUMBER_H_INCLUDED
//RandomNumber.cpp
#include "RandomNumber.h"#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;//产生种子RandomNumber::RandomNumber(unsigned long s){ if(s == 0) randSeed = time(0); else randSeed = s;}// 产生0 ~ n-1 之间的随机整数unsigned short RandomNumber::Random(unsigned long n){ randSeed = multiplier *randSeed + adder; return(unsigned short)((randSeed >> 16)% n);}//产生[0,1)间的随机数double RandomNumber::fRandom(){ return Random(maxshort)/double(maxshort);}
0 0
- 随机化算法——随机数类代码
- 随机化算法(1) — 随机数
- 0041算法笔记——【随机化算法】随机化算法与随机数问题
- 0041算法笔记——【随机化算法】随机化算法与随机数问题
- 随机化算法及随机数的产生
- 随机化算法(2) — 数值概率算法
- 0045算法笔记——【随机化算法】舍伍德随机化思想搜索有序表
- 0046算法笔记——【随机化算法】舍伍德随机化思想解决跳跃表问题
- 0045算法笔记——【随机化算法】舍伍德随机化思想搜索有序表
- 0046算法笔记——【随机化算法】舍伍德随机化思想解决跳跃表问题
- 随机化算法(随机数产生并模拟抛硬币实验)
- 0043算法笔记——【随机化算法】解非线性方程组
- 0043算法笔记——【随机化算法】解非线性方程组
- 一窥随机化算法——舍伍德算法的应用
- 随机化算法——舍伍德算法的应用
- 算法知识点整理——第7章 随机化算法
- 随机化算法(4) — 拉斯维加斯(Las Vegas)算法
- 随机化算法(5) — 蒙特卡罗(Monte Carlo)算法
- ubuntu创建、删除文件及文件夹,强制清空回收站方法
- chapter7 机器学习之元算法(adaboost)提高分类性能从原理到实现
- 让python的mysqldb返回的结果集为字典类型
- 更换背景——从相册或相机中获取图片并截取
- AlphabetIndexer字母索引辅助类
- 随机化算法——随机数类代码
- 夏时制
- C++中系统内存分区与程序内存分区
- error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)
- java中的io系统详解(值得一看)
- 告诉你掌握哪些才算掌握了Java基础
- 之前工作真机调试的奇遇
- Android复习练习十一(ListView列表显示使用BaseAdapter以及ListView动态刷新)
- java经典问题:传值还是传引用