⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 生成均匀分布随机数和泊松分布随机数的程序
💻 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 + -