大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
由泊松分布公式 ,可以推出前后项的关系 这样,就可以由k项推出第k+1项。现在,来分析如何计算符合泊松分布的随机数。 对整数k从1到正无穷,每次都rand()一个小数,如果小于P(x=k)则输出k,此时的k即为符合泊松分布的一个值。重复上述步骤N次,即可得到N个符合泊松分布的随机数。伪代码形式:p = exp(-lamda);for k = 0 - 无穷大 randValue = rand(); if( randValue p) cout k; break; else p = p * lamda / (k+1); k++;java代码:int num = 1000;//产生随机数的个数int lamda = 20;//lamda值for( int i = 0; i num; i++){BigDecimal p0 = new BigDecimal(Math.exp(-lamda)); int k = 0;while(true){double randValue = Math.random();if( p0.doubleValue() randValue)break;else{p0 = p0.multiply(new BigDecimal(1.0*lamda / (k+1)));k++;//System.out.println(randValue);}if( k = 3 * lamda )//防止找不到的情况{k = 0;p0 = new BigDecimal(Math.exp(-lamda)); }//System.out.println("--------------");}System.out.println(i+" : "+k);
为德宏州等地区用户提供了全套网页设计制作服务,及德宏州网站建设行业解决方案。主营业务为成都做网站、网站制作、成都外贸网站建设、德宏州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
y=poisspdf(x,25)为matlab中求泊松分布的函数。
Poisson分布(法语:loi de Poisson,英语:Poisson distribution,译名有泊松分布、普阿松分布、卜瓦松分布、布瓦松分布、布阿松分布、波以松分布、卜氏分配等),是一种统计与概率学里常见到的离散概率分布,由法国数学家西莫恩·德尼·泊松(Siméon-Denis Poisson)在1838年时发表。
泊松分布的概率函数为:
泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生率。 泊松分布适合于描述单位时间内随机事件发生的次数。
泊松分布的期望和方差均为
特征函数为
让我来告诉你答案!C++:RAND()JAVA。java.lang.Math.random()创建java.util.Random对象MATLAB:RAND(N):产生0-1n阶方兰特(M,N)之间的随机数,生成0-1之间的随机数m×n矩阵另外:Matlab的随机数生成函数betarndBeta分布的随机数生成器binornd二项随机数生成器(箱功能)分配的exprnd指数随机数发生器frnd举报F分布的随机数发生器随机数发生器gamrnd伽玛分布/geornd几何分布的随机数发生器hygernd超几何分布的随机数发生器lognrnd对数正态分布的随机数发生器nbinrnd负二项式分布的随机数生成器ncfrnd非中心Fnctrnd非中心t分布的随机数发生器的随机数生成器ncx2rnd非中心卡方分布的随机数发生器normrnd正常(高斯)分布poissrnd泊松分布的随机数生成的随机数发生器是raylrnd瑞利分布的随机数生成器trnd学生的t分布的随机数生成unidrnd离散均匀分布的随机数发生器unifrnd连续均匀分布的weibrnd随机数发生器的Weibull分布的随机数发生器
看看这个程序怎么处理:function x=poisondist(x0,lamda,n)format long;x=zeros(n,1);for i=1;n; b=1; tol=1; k=0; while tol==1 r=mixmod(x0,10,1); b=b*r(10); if bexp(-lamda) tol=0; x(i)=k; else k=k+1; end end x0=x0+31;endformat short;x0是种子,n为数列x的项数。这个是老师给的泊松分布代码,我感觉很多地方都是错的,但是不知道怎么改。谢谢!
C++一般采用和系统时间搭配来产生随机数
经典的《c程序设计教程》是这样做的
#indclude"time.h"
srand(time(NULL));
int x;
x=rand();
楼主说的是matlab 吧
matlab产生随机数的方法有很多,因为matlab专门是用来做数值计算的
randon 浮点型
randperm(N) 整数型
betarnd 贝塔分布的随机数生成器
binornd 二项分布的随机数生成器
chi2rnd 卡方分布的随机数生成器
exprnd 指数分布的随机数生成器
frnd f分布的随机数生成器
gamrnd 伽玛分布的随机数生成器
geornd 几何分布的随机数生成器
hygernd 超几何分布的随机数生成器
lognrnd 对数正态分布的随机数生成器
nbinrnd 负二项分布的随机数生成器
ncfrnd 非中心f分布的随机数生成器
nctrnd 非中心t分布的随机数生成器
ncx2rnd 非中心卡方分布的随机数生成器
normrnd 正态(高斯)分布的随机数生成器
poissrnd 泊松分布的随机数生成器
raylrnd 瑞利分布的随机数生成器
trnd 学生氏t分布的随机数生成器
unidrnd 离散均匀分布的随机数生成器
unifrnd 连续均匀分布的随机数生成器
weibrnd 威布尔分布的随机数生成器
java随机数生成就是采用Math.random()方法
random
public static double random()返回带正号的 double 值,大于或等于 0.0,小于 1.0。
楼主可以参阅API
提供一个主要的思路,具体处理方法看你要解决的问题需满足什么条件。
根据泊松过程定义,令随机变量Tn(n≥1)表示从(n-1)次事件发生到第n次事件发生的时间间隔,则可证明,Tn服从相互独立但参数为λ的相同指数分布。这可用蒙特卡洛仿真来处理。其步骤为:
1)令当前时刻t=0,泊松事件计数值为N=0;
2)利用rand产生(0,1)上均匀分布的随机数U,令E=-1/λ*ln(U);
3)令t=t+E,如果tT,则停止;
4)令N=N+1,并且设tn=t;
5)循环直至循环终止
代码如下:以λ=2,T=10为例
clc,clear
t=0;N=0;
T=10;lamda=2;A=[];
while(t=T)
U=rand;
E=-1/lamda*log(U);
t=t+E;
N=N+1;
A=[A;N,t];
end
A=A';
由A知发生故障的时间点为:
[0.0298 0.0523 0.3288 1.7373 2.4619 2.9823 3.0808 5.1674 6.7404 7.6293 7.8454 8.0016 8.2187 8.6170 8.9186 9.5268 9.6741 10.5073]
当你要产生序列的时候,将上述时间点换成1,其余时间点令为0即可,由于序列的时间点为整数,这就涉及到取整的问题,如何处理看你的需要。
参考文献:
基于MATLAB的随机过程仿真