Tag Archives: 随机数

使用XLW生成XLL文件来简化开发Excel扩展功能

在使用Excel时,特别是需要使用分析工具时,我们就会使用到加载宏,这里面的宏好多就是扩展Excel功能的XLL文件,这个XLL文件其实是满足一定接口规范的DLL链接库文件,而且经常是使用C++开发的,如果直接使用Excel SDK进行XLL开发是比较麻烦的,针对这一问题,XLW出现了。
阅读全文 >

采用C++ TR1中的随机数发生器生成Gamma分布随机数

随机水文学中常会用到符合Gamma分布随机数,用于模拟一些随机的水文过程,这里水文工具集介绍一种使用C++语言的TR1新特征中的随机数发生器来产生Gamma分布随机数,当然TR1的随机数库里面还有许多生成其它分布的类(如:柏努利分布,二项分布,指数分布,几何分布,正态分布和泊松分布等),这里仅就Gamma分布进行简单介绍,其它的也很容易的,如果什么时候需要的话,也可以写成DLL或者COM以供其它语言调用的。具体产生Gamma分布随机数的源代码如下:
阅读全文 >

非均匀变异算子

智能算法中常用的变异算子有采用高斯变异柯西变异Levy变异,这里给出一种也比较不错的非均匀变异。

非均匀变异算子的工作原理如下:
阅读全文 >

产生Levy分布随机数LevyRand源代码

智能算法中除了经常用到正态分布柯西分布的随机数外,还会需要到另外一种分布随机数产生器,那就是Levy分布,Levy分布随机数兼具上面两种分布的特性,是两种分布的一种调和,在智能算法中引入Levy随机分布一般可以对算法起改进作用,已经有不少学者在进化策略中引入Levy分布随机数,实验表明对算法性能有改进。这里水文工具集提供一个产生Levy分布随机数的函数源代码,函数名为LevyRand,具体代码如下:
阅读全文 >

拟蒙特卡罗方法简介

蒙特卡罗方法(Monte-Carlo,亦有译作蒙特卡洛方法),又称统计试验方法或计算机随机模拟方法,是一类通过对有关的随机变量或随机过程的随机抽样,来求解数学、物理和工程技术问题近似解的数值方法。具体来说,就是对所要求解的问题,构造一种随机变量或随机过程,使其某一数值特征(例如数学期望)为所求问题的解。
阅读全文 >

高效且随机分布很好的随机数发生器MersenneTwister

普通的随机数发生器产生的伪随机数经常存在周期比较短,或者效率不高,或者随机分布特征不佳等缺点,这里给出的是一个高效的而且随机分布特征很不错的MersenneTwister随机数发生器,下面是源代码。
阅读全文 >

VBA产生柯西分布随机数CauchyRand

智能算法中除了经常用到正态分布的随机数外,还经常需要另外一种分布随机数产生器,那就是柯西分布,柯西分布可以有较大的概率跳出局部最优,加大搜索范围,不少改进的进化算法都引入了柯西分布随机数来对算法进行改进,CnHUP曾经在VBA产生正态分布随机数NormalRand中实现了相关的代码,这里再使用VBA实现柯西分布随机数的产生,函数名为CauchyRand。具体VBA代码如下:
阅读全文 >