谁能用C语言或matlab产生5行4列按泊松分布且值在0和1之间的随机数需提供程序代码或操作流程,我要求有最终的数值
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/20 08:28:42
谁能用C语言或matlab产生5行4列按泊松分布且值在0和1之间的随机数需提供程序代码或操作流程,我要求有最终的数值
谁能用C语言或matlab产生5行4列按泊松分布且值在0和1之间的随机数
需提供程序代码或操作流程,我要求有最终的数值
谁能用C语言或matlab产生5行4列按泊松分布且值在0和1之间的随机数需提供程序代码或操作流程,我要求有最终的数值
第一步:产生很多(0,1)上的均匀分布随机数(可以查表,不过一般的软件可以直接调)设为x1,x2,x3,x4,x5.
第二步:假设需要模拟的泊松分布参数为λ,计算出e^(-λ),
第三步:取满足x1* x2* ...* xk >= e^(-λ) > x1* x2* ...*x(k+1)
中的K为产生的第一个随机数,然后把上面用过的k+1个数去掉,又重复上面的步骤就可以了.
比如 x1*x2 >= e^(-λ),但是x1*x2*x3 < e^(-λ),那么产生的第一个随机数就为2,然后又从x4乘起,重复上面的步骤,产生第二个随机数.
#include
#include
#include
#include
double Rand()
{
\x05return (double)(rand() & 0xFFFF) / (double)0x10000;
}
int Prand(double n)
{
\x05double t=1,x = Rand();
\x05int y = 0;
\x05do
\x05{
\x05\x05t *= x;
\x05\x05x = Rand();
\x05\x05if(t >= n) y ++;
\x05}
\x05while(t >= n);
\x05return y;
}
void main()
{
\x05int table[5][4];
\x05double n;
\x05srand(time(NULL));
\x05printf("please input number");
\x05scanf("%lf",&n);
\x05n = exp(-n);
\x05for(int i=0;i