C语言生成服从均匀分布, 瑞利分布, 莱斯分布, 高斯分布的随机数
用c语言 产生服从均匀分布, 瑞利分布,莱斯分布,高斯分布的随机数
- 1. 均匀分布或称规则分布,顾名思义,均匀的,不偏差的。植物种群的个体是等距分布,或个体之间保持一定的均匀的间距。
- 2. 高斯分布, 即正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。[1] 是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
- 3. 瑞利分布(Rayleigh Distribution):当一个随机二维向量的两个分量呈独立的、有着相同的方差的正态分布时,这个向量的模呈瑞利分布.
- 4. 莱斯分布(Rice distribution或Rician distribution)是一种连续概率分布,以美国科学家斯蒂芬·莱斯(en:Stephen O. Rice)的名字命名。 正弦波加窄带高斯过程的包络概率密度函数分布称为莱斯(Rice)密度函数,也称广义瑞利分布。
# include "stdio.h"
# include "math.h"
# include "stdlib.h"
# include "math.h"
# include "dos.h"
# define MAX_N /*这个值为N可以定义的最大长度*/
# define N /*产生随机序列的点数,注意不要大于MAX_N*/ /*1.产生均匀分布的随机变量*/
void randa(float *x,int num); /*2.产生瑞利分布的随机变量*/
void randr(float *x,int num); /*3.产生标准高斯分布的随机变量*/
void randn(float *x,int num); /*4.产生莱斯分布的随机变量*/
void randl(float *x, float a, float b, int num); void fshow(char *name,float *x,int num); /***************************************/
int main()
{ float x[N];
int i; // randa(&x,N); //均匀分布
// randr(&x,N); //瑞利分布
// randl(&x,10,10,N); //莱斯分布
randn(&x,N); //高斯分布 /*此时x[N]表示要生成N个服从xx分布的的数组*/ fshow("x",&x,N); /*显示该序列*/ getch();
return 0; }
/***************函数定义************************/ /*产生服从均匀分布的随机变量*/
void randa(float *x,int num)
{
int i;
struct time stime;
unsigned seed;
gettime(&stime);
seed=stime.ti_hund*stime.ti_min*stime.ti_hour;
srand(seed);
for(i=;i<num;i++)
{
x[i]=rand();
x[i]=x[i]/;
}
}
/*产生服从瑞利分布的随机变量*/
void randr(float *x,int num)
{
float x1[MAX_N];
int i;
struct time stime;
unsigned seed;
gettime(&stime);
seed=stime.ti_hund*stime.ti_min*stime.ti_hour;
srand(seed);
for(i=;i<num;i++)
{
x1[i]=rand();
x[i]=x1[i]/;
x[i]=sqrt(-*log(x[i]));
} }
/*产生服从标准高斯分布的随机变量*/
void randn(float *x,int num)
{
float x1[MAX_N],x2[MAX_N];
int i;
struct time stime;
unsigned seed;
gettime(&stime);
seed=stime.ti_hund*stime.ti_min*stime.ti_hour;
srand(seed);
for(i=;i<num;i++)
{
x1[i]=rand();
x2[i]=rand();
x1[i]=x1[i]/;
x2[i]=x2[i]/;
x[i]=sqrt(-*log(x1[i]))*cos(x2[i]*M_PI);
} }
/*产生服从莱斯分布的随机变量*/
void randl(float *x, float a, float b, int num)
{
float x1[MAX_N],x2[MAX_N];
float temp[MAX_N];
int i;
struct time stime;
unsigned seed;
gettime(&stime);
seed=stime.ti_hund*stime.ti_min*stime.ti_hour;
srand(seed);
for(i=;i<num;i++)
{
x1[i]=rand();
x2[i]=rand();
x1[i]=x1[i]/;
x2[i]=x2[i]/;
temp[i]=sqrt(-*log(x1[i]))*cos(x2[i]*M_PI);
x2[i]=sqrt(-*log(x1[i]))*sin(x2[i]*M_PI);
x1[i]=temp[i];
x[i]=sqrt((a+x1[i])*(a+x1[i])+(b+x2[i])*(b+x2[i]));
} } void fshow(char *name,float *x,int num)
{
int i,sign,L;
float temp;
printf("\n");
printf(name);
printf(" = ");
L=;
/*按照每行6个数据的格式显示*/
for(i=;i<num;i++)
{
temp=i/L;
sign=temp;
if((i-sign*L)==) printf("\n");
if(x[i]>) printf(" %f ",x[i]);
else printf("%f ",x[i]);
}
}
其他分布的详细介绍, 请戳这里:http://www.math.uah.edu/stat/special/index.html
国外知名网站给出的各种分布的曲线图(后台程序驱动):

---OVER---
附录: Cauchy 分布 随机数生成代码:
import math
import random def cauchy(location, scale): # Start with a uniform random sample from the open interval (0, 1).
# But random() returns a sample from the half-open interval [0, 1).
# In the unlikely event that random() returns 0, try again. p = 0.0
while p == 0.0:
p = random.random() return location + scale*math.tan(math.pi*(p - 0.5))
C语言生成服从均匀分布, 瑞利分布, 莱斯分布, 高斯分布的随机数的更多相关文章
- Matlab 高斯分布 均匀分布 以及其他分布 的随机数
Matlab 高斯分布 均匀分布 以及其他分布 的随机数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布 ...
- Javascript 随机数函数 学习之一:产生服从均匀分布随机数
大家都知道Math.random是 javascript 中返回伪随机数的函数,但查看 MDN, The Math.random() function returns a floating-point ...
- HIVE- 数据倾斜
数据倾斜就是由于数据分布不均匀,数据大量集中到一点上,造成数据热点.大多数情况下,分为一下三种情况: 1.map端执行比较快,reduce执行很慢,因为partition造成的数据倾斜. 2.某些re ...
- AWGN
高斯白噪声的功率谱密度服从均匀分布,幅度分布服从高斯分布: 白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性: 高斯白噪声在任意两个不同时刻上的随机变量之间,不仅是互不相关的,而 ...
- 使用K-S检验一个数列是否服从正态分布、两个数列是否服从相同的分布
假设检验的基本思想: 若对总体的某个假设是真实的,那么不利于或者不能支持这一假设的事件A在一次试验中是几乎不可能发生的.如果事件A真的发生了,则有理由怀疑这一假设的真实性,从而拒绝该假设. 实质分析: ...
- 各类分布----二项分布,泊松分布,负二项分布,gamma 分布,高斯分布,学生分布,Z分布
伯努利实验: 如果无穷随机变量序列 是独立同分布(i.i.d.)的,而且每个随机变量 都服从参数为p的伯努利分布,那么随机变量 就形成参数为p的一系列伯努利试验.同样,如果n个随机变量 独立同 ...
- Java中利用Math.random()产生服从泊松分布的随机数
众所周知.Java的Math.random()产生的是服从均匀分布的随机数,可是其它分布的应用也相当广泛,比如泊松分布和高斯分布(正态分布).而这些分布Java没有非常好的提供(高斯分布能够利用Ran ...
- C语言产生标准正态分布或高斯分布随机数
C语言 产生标准正态分布或高斯分布 随机数 产生正态分布或高斯分布的三种方法: 1. 运用中心极限定理(大数定理) #include #include #define NSUM 25 double g ...
- R语言生成随机数
1.概述 作为一种语言进行统计分析,R有一个随机数生成各种统计分布功能的综合性图书馆.R语言可以针对不同的分布,生成该分布下的随机数.其中,有许多常用的个分布可以直接调用.本文简单介绍生成常用分布随机 ...
随机推荐
- javascript 工具函数
转义特殊字符为html实体 HtmlEncode: function(str){ return str.replace(/&/g, '&').replace(/\"/g, ' ...
- git初体验(五)SSH的理解
一.SSH SSH是Secure shell的缩写,即"安全外壳协议",专为远程登录会话和其他网络服务提供安全性的协议,是一项计算机上的安全协议. 传统的网络服务程序,如rsh.F ...
- Java 垃圾收集机制
对象引用 Java 中的垃圾回收一般是在 Java 堆中进行,因为堆中几乎存放了 Java 中所有的对象实例.谈到 Java 堆中的垃圾回收,自然要谈到引用.在 JDK1.2 之前,Java 中的引用 ...
- 【CodeForces 567E】President and Roads(最短路)
Description Berland has n cities, the capital is located in city s, and the historic home town of th ...
- iOS推送处理
iOS收到推送后,跳转到某一页面 字数1348 阅读1001 评论4 喜欢26 以前做过推送, 但只是那种最基本的广播推送(向所有安装appde设备通知), 列播组播这种对指定用户推送消息还没做过, ...
- C/C++中数组转换成指针的情况
数组转换成指针:在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针.比如: int ia[10]; int *p = ia; //ia转换成指向数组首元素的指针 以下情况上述转换不会发生: ...
- Java数组操作利器:Arrays工具类
java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T ...
- jquery插件-表单验证插件-rules
ruels方法 1说明:查看.新增.移除一个表单控件的验证规则 2使用: 表单控件.rules(); 参数: rules() 返回元素的验证规则 rules('add',rules) 增加验证规则 r ...
- dbm速算
经常用到,但是经常搞忘记.在这里记录一下换算的一些技巧. 为什么要用dB 在最前面,需要解释一下dB的由来,这样会让理解变得简单一点.事实上,dB(分贝)是一个纯计数单位.使用dB的目的呢,其实就是用 ...
- excel处理数字的时候避免自动转为double
帮同事解决了一个POI解析Excel的功能,就是他想读出单元格中的原始内容,但是poi在处理数字的时候会自动转换为double了,这样对于一些对1和1.00有严格区分的场景下,会出现问题.我看网上很多 ...