社区
C语言
帖子详情
请高手指点~如何产生100个服从标态正态分布的随机数
beautiful_day
2006-10-17 03:56:53
请各位高手指点,如何用c语言“产生100个服从指数分布(λ=0.15)的随机数”以及
“产生100个服从标态正态分布的随机数”呢??
请大家指点指点!
...全文
3632
5
打赏
收藏
请高手指点~如何产生100个服从标态正态分布的随机数
请各位高手指点,如何用c语言“产生100个服从指数分布(λ=0.15)的随机数”以及 “产生100个服从标态正态分布的随机数”呢?? 请大家指点指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
beautiful_day
2006-10-22
打赏
举报
回复
很详细阿~~太感谢了~merci beaucoup~
jixingzhong
2006-10-18
打赏
举报
回复
二、任意分布随机数的产生
下面提出了一种已知概率密度函数的分布的随机数的产生方法,以典型的正态分布为例来说名任意分布的随机数的产生方法。
如果一个随机数序列服从一维正态分布,那么它有有如下的概率密度函数:
(1-1)
其中μ,σ( >0)为常数,它们分别为数学期望和均方差,如果读者对数学期望和均方差的概念还不大清楚,请查阅有关概率论的书。如果取μ =0,σ =0.2,则其曲线为
图2 正态分布的概率密度函数曲线
从图中可以看出,在μ附近的概率密度大,远离μ的地方概率密度小,我们要产生的随机数要服从这种分布,就是要使产生的随机数在μ附近的概率要大,远离μ处小,怎样保证这一点呢,可以采用如下的方法:在图2的大矩形中随机产生点,这些点是平均分布的,如果产生的点落在概率密度曲线的下方,则认为产生的点是符合要求的,将它们保留,如果在概率密度曲线的上方,则认为这些点不合格,将它们去处。如果随机产生了一大批在整个矩形中均匀分布的点,那么被保留下来的点的横坐标就服从了正态分布。可以设想,由于在μ处的f(x)的值比较大,理所当然的在μ附近的点个数要多,远离μ处的少,这从面积上就可以看出来。我们要产生的随机数就是这里的横坐标。
基于以上思想,我们可以用程序实现在一定范围内服从正态分布的随机数。程序如下:
double Normal(double x,double miu,double sigma) //概率密度函数
{
return 1.0/sqrt(2*PI*sigma) * exp(-1*(x-miu)*(x-miu)/(2*sigma*sigma));
}
double NormalRandom(double miu, double sigma,double min,double max)//产生正态分布随机数
{
double x;
double dScope;
double y;
do
{
x = AverageRandom(min,max);
y = Normal(dResult, miu, sigma);
dScope = AverageRandom(0, Normal(miu,miu,sigma));
}while( dScope > y);
return x;
}
参数说明:double miu:μ,正态函数的数学期望
double sigma:σ,正态函数的均方差
double min,double max,表明产生的随机数的范围
用如上方法,取 μ=0,σ=0.2,范围是-1~1产生400个正态随机数如图3所示:
图3 μ=0, σ=0.2,范围在-1~1时的400个正态分布的随机数分布图
取 μ=0, σ=0.05,范围是-1~1产生400个正态随机数如图4所示:
图4 μ=0,σ=0.05,范围在-1~1时的400个正态分布的随机数分布图
从图3和图4的比较可以看出, 越小,产生的随机数靠近 的数量越多,也说明了产生的随机数靠近 的概率越大。
我们,先产生4000个在0到4之间的正态分布的随机数,取μ=0,σ=0.2,再把产生的数据的数量做个统计,画成曲线,如下图5所示:
图5 μ=0, σ=0.2,范围在0~4时的4000个正态分布的随机数统计图
从图5中也可以看出,在靠近 处的产生的个数多,远离 处的产生的数量少,该图的轮廓线和概率密度曲线的形状刚好吻合。也就验证了该方法的正确性。
有了以上基础,也就用同样的方法,只要知道概率密度函数,也就不难产生任意分布的随机数,方法都是先产生一个点,然后进行取舍,落在概率密度曲线下方的点就满足要求,取其横坐标就是所要获取的随机数。
【http://www.vckbase.com/document/viewdoc/?id=1424】
需要看图以及下载代码, 请到上述链接。
beautiful_day
2006-10-17
打赏
举报
回复
see see~~~感激不尽!!
beautiful_day
2006-10-17
打赏
举报
回复
是这里面有吗?
飞哥
2006-10-17
打赏
举报
回复
http://attachment.itpub.net/25/72/72_094135_1144474366.rar
---------
本光盘是《计算机常用数值计算算法与程序 C++版》一书的配套光盘,盘中包括了书中所有的C++程序源代码文件,每个源程序文件的文件扩展名都使用.cpp形式。这些C++程序已经在微软公司Windows平台下的Virsual C++ 6.0环境下通过。盘中还包括由这些源程序在VC++6.0下生成的可执行文件(文件扩展名为.exe),以及由这些程序运行后产生的结果文件(文件扩展名为.dat)。另外,还包括若干类书中所介绍算法的头文件,由文件扩展名为.h和.inl所组成。
为了方便读者实际应用书中所介绍的算法程序,本光盘专门预创建了VC++6.0的工程,以每一章建立一个工程,一共有16个工程,对应着书中的16章。全部工程包含在一个目录(文件夹)——NumComp下,该目录下一共有17个子目录(文件夹),第一个到第十六个为每章所对应的工程文件夹,命名为ChapXX,XX表示01至16,如Chap05,表示为第五章的程序所建立了工程目录(文件夹),第17个目录(文件夹)名为include,其中存放了本书中算法程序需要的诸头文件。在前十六个目录(文件夹)中除存放了各章所介绍的算法示例C++源程序文件,还包括几个VC++6.0工程所需要的文件,读者可以不用去动它们。在每一个ChapXX目录(文件夹)下,还有一个目录(文件夹):debug,该目录(文件夹)中存放了ChapXX所对应的章中所有算法C++源程序生成的可执行文件和这些程序运行后生成的结果数据文件。除止之外,还有几个是VC++6.0工程所生成的文件,读者可以不用去动它们。
在每一个ChapXX目录(文件夹)下,包括一个这样的文件:ChapX.dsw,X表示1至16这16个阿拉伯数字之一,对应于这X章的工程。当进入到某一这样的目录(文件夹)中,用鼠标双击该文件名,就可以启动VC++6.0程序,并调用了该工程,这是最方便的一种启动VC++6.0的方法之一,下面就可以进行对C++程序的编辑、编译、连接、运行等工作了。具体的操作步骤,可以参阅有关VC++6.0的使用操作手册,或技术手册。
如果读者要自己另外建立VC++6.0的工程及相应的目录(文件夹),可以参阅VC++6.0的使用操作手册,也可阅读《计算机常用数值计算算法与程序 C++版》一书的第一章“概论”中的1.8节“Visual C++ 6.0的编译运行环境”,其中有详细说明。
最后注意,在VC++ 6.0中设置好路径,特别是include目录(文件夹)的路径,否则在编译时会出现找不到头文件的错误,使编译无法正常进行。具体的设置方法请参看本书第1章的相关内容。
[Math]
服从
高斯分布的随机生成器
组里的同事突然问我如何生成
服从
高斯的随机生成器。 想当然的就感觉给定高斯函数,然后利用rand()的均匀分布
产生
的
随机数
,来模拟。 总感觉有点问题。 然后调查了一番,感觉还是有点东西需要记录,算是再学习吧。 1) 按照中心极限定理,对于独立同分布的随机变量之和逼近于
正态分布
。 这样就可以用rand()生成的
随机数
,有限次相加就可以逼近
正态分布
了。 加上平均值和偏差也就可以模拟
服从
高斯分...
5位
随机数
重复的概率 php_Python数据分析入门日记Day5 :科学技术库Numpy:生成
随机数
...
Python数据分析入门日记Day5——科学技术库Numpy:生成
随机数
今天学习了在Numpy中生成
随机数
,主要运用到random模块,这是关于学习Python科学数据库Numpy的最后一天啦,内容很轻松。1、random.rand()利用random.rand()函数,可以生成在0~1范围内满足均匀分布的
随机数
。在“()”中输入数字4,将生成4个数字,满足均匀分布。若要生成满足均匀分布...
机器篇——线性回归 公式 图文 代码 相互结合详细讲解
一.线性回归的相关理论 1.回归 大自然总是让我们回归到一定的区间之内。就好像,除了少数的伟人,我们绝大部分人会回归到平凡,成人普通人。而那些伟人很少,普通民众很多,整体分布就类似于
正态分布
图一样。这,也是我们回归的分布图。 在英雄的传记里面,英雄往往就那么几个人,而整个世界,基本是普通人。这,也是绝大部分人,都会被回归普通,回归平凡,那些英雄...
random7->random10
问题:rand7能生成1-7的整数
随机数
。要求利用rand7生成1-10的整数
随机数
。 总结探讨几种方法,并给出比较。我在最初写这篇文章的时候,出了一些错误,主要的原因是测试的方法不对,因此本文也强调一下对随机测试的问题。感慨一下知识的浩瀚和自己的渺小。感谢mingliang1212和hpsmouse的帮助。可以参看原帖。 1. 舍去法 一次rand7运算只能生成7个整数,没
python 回归 显著_线性回归模型理论&案例
为什么讲线性回归模型?1、线性回归模型是最基础的模型,我们之前讲了很多高大上的模型,却忽视了这个模型,因此想对这个模型有进一步了解;2、线性回归模型用起来很简单,但是看了很多资料后,发现它的原理并不也很简单,我们经常简单去使用,而对后面的复杂原理却了解较少;3、我们分析中经常要做x对连续变量y的(相关分析、影响分析、预测分析),线性回归模型正是可以用于这些场景。一、线性回归模型1.1、线...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章