WEB开发网
开发学院软件开发VC 任意分布的随机数的产生方法—VC程序实现方法 阅读

任意分布的随机数的产生方法—VC程序实现方法

 2007-03-15 21:55:46 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 摘要:随机数在实际运用中非常之多,如游戏设计,任意分布的随机数的产生方法—VC程序实现方法,信号处理,通常我们很容易得到平均分布的随机数,其实不然,仔细一看,但如何根据平均分布的随机数进而产生其它分布的随机数呢?本文提出了一种基于几何直观面积的方法,以正态分布随机数的产生为例讨论了任意

本文示例源代码或素材下载

摘要:

随机数在实际运用中非常之多,如游戏设计,信号处理,通常我们很容易得到平均分布的随机数。但如何根据平均分布的随机数进而产生其它分布的随机数呢?本文提出了一种基于几何直观面积的方法,以正态分布随机数的产生为例讨论了任意分布的随机数的产生方法。

正文:

一、平均分布随机数的产生

大家都知道,随机数在各个方面都有很大的作用,在vc的环境下,为我们提供了库函数rand()来产生一个随机的整数。该随机数是平均在0~RAND_MAX之间平均分布的,RAND_MAX是一个常量,在VC6.0环境下是这样定义的:

#define RAND_MAX 0x7fff

它是一个short 型数据的最大值,如果要产生一个浮点型的随机数,可以将rand()/1000.0这样就得到一个0~32.767之间平均分布的随机浮点数。如果要使得范围大一点,那么可以通过产生几个随机数的线性组合来实现任意范围内的平均分布的随机数。例如要产生-1000~1000之间的精度为四位小数的平均分布的随机数可以这样来实现。先产生一个0到10000之间的随机整数。方法如下 :

int a = rand()%10000;

然后保留四位小数产生0~1之间的随机小数:

double b = (double)a/10000.0;

然后通过线性组合就可以实现任意范围内的随机数的产生,要实现-1000~1000内的平均分布的随机数可以这样做:

double dValue = (rand()%10000)/10000.0*1000-(rand()%10000)/10000.0*1000;

则dValue就是所要的值。

到现在为止,你或许以为一切工作都已经完成了,其实不然,仔细一看,你会发现有问题的,上面的式子化简后就变为:

double dValue = (rand()%10000)/10.0-(rand()%10000)/10.0;

1 2 3 4  下一页

Tags:任意 分布 随机数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接