?? main.cpp
字號:
#include<string>
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
double Drand()//drand()產生0~1之間的隨機數
{
float x;
int i;
for(i=0;i<20;i++)rand();
x=rand();
x=65539*x+1743251541;
x=fmod(x,2147483638);
return(x/2147483638);
}
float poissn(float la)//poissn()產生泊松分布隨機數
int k=0;
float b,t=1.0f,r;
b=exp(-la);
while((t-b)>=0)
{
r=Drand();
t=t*r;
k=k+1;
}
return k;
}
int Poisson_rand(int N, double p)//二項分布逼近泊松分布
{
int rlt=0;
if(p<=0.0||p>1) return -1;
while(N-->0)
{
if(Drand()<=p)rlt++;
}
return rlt;
}
void main()
{
int p[10]={0,0,0,0,0,0,0,0,0,0};
for(int i=0;i<1000;i++)
{
switch (Poisson_rand(1000,0.002))
{
case 0:{p[0]++;break;}
case 1:{p[1]++;break;}
case 2:{p[2]++;break;}
case 3:{p[3]++;break;}
case 4:{p[4]++;break;}
case 5:{p[5]++;break;}
case 6:{p[6]++;break;}
case 7:{p[7]++;break;}
case 8:{p[8]++;break;}
case 9:{p[9]++;break;}
}
}
for(i=0;i<10;i++)cout<<p[i]<<endl;
cout<<endl;
for(i=0;i<10;i++)p[i]=0;
for(i=0;i<1000;i++)
{
switch (int(poissn(2)))
{
case 0:{p[0]++;break;}
case 1:{p[1]++;break;}
case 2:{p[2]++;break;}
case 3:{p[3]++;break;}
case 4:{p[4]++;break;}
case 5:{p[5]++;break;}
case 6:{p[6]++;break;}
case 7:{p[7]++;break;}
case 8:{p[8]++;break;}
case 9:{p[9]++;break;}
}
}
for(i=0;i<10;i++)cout<<p[i]<<endl;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -