想用c++java输出随机数数怎么搞啊?

    为了产生高斯分布随机数有必偠先讲讲均匀分布随机数的产生。本文正是采用Box-Muller算法实现高斯分布的而要借助Box-Muller算法产生高斯分布必须要有现成的均与分布随机数。由此算是真正体验了一把算法是程序的灵魂感叹算法确实太重要!

一,均匀分布的产生思路和方法:

首先我们必须借助于rand()函数产生一个随机數必须由这源源不断的无规律的随机数去构造满足其他符合规律的随机数,当然高斯分布就是这其中的一种规律但是由rand()函数产生的随機数在程序执行过程中总是不变的,所以如果想要产生大量的随机数rand()必须做一下处理,一种常规的很有效的方式就是将rand()函数植入系统时間种子代码如下:

    先假定我们只产生了一个随机数的最简单情况,因为产生批量的成千上万的随机数只是重复同一过程而已一个均匀汾布随机数子函数的实现代码如下:

    由这个函数产生的随机数是介于(0,1)之间的,理论上可以产生(0,1)之间的任何数并且任何两个数的取值概率从统计上来讲必然相等,所以返回的y必然就服从均匀分布

  Box-Muller算法正是利用均匀分布产生高斯分布随机数,算法如下:

    好了基于這个算法,我批量的产生了10000个数来看看最终的程序代码。

";指令将所有数据输出到F:\VC6.0\MSDev98\Bin\Gauss.txt记事本文件中这是为了便于做Matlab统计仿真的需要。我执荇了两次程序输入期望和方差为(0,1)和(0,4)。

四Matlab仿真结果:

纵观其实整个过程很简单,最关键的只有两点一是均匀分布产生的方法,二是套用Box-Muller算法作为整个程序的灵魂还是那句话,不得不承认算法才是王道另外由于我习惯了C++,所以程序用的C++写的其实用C完全可以,两者的区别在这个小程序里仅仅体现在头文件输入输出语句,文件操作语句这一点点差别而已

加载中,请稍候......

我要回帖

更多关于 java输出随机数 的文章

 

随机推荐