📄 main.cpp
字号:
#include<stdlib.h>
#include<stdio.h>
#include<iostream.h>
#include<math.h>
#include <ctime>
void change(int a,int b)//如果a<b,则交换a,b
{
int *p1,*p2,*p;
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
}
double AverageRandom(double min,double max)//均匀分布概率密度
{
int minInteger = (int)(min*10000);//控制精度
int maxInteger = (int)(max*10000);
int randInteger = rand()*rand();
int diffInteger = maxInteger - minInteger;
int resultInteger = randInteger % diffInteger + minInteger;
return resultInteger/10000.0;
}
double Normal(double x,double sita) //指数分布概率密度函数
{
return 1/sita*exp(-1*x/sita);
}
double NormalRandom(double sita,double min,double max)//指数分布随机数
{
double x;
double dScope;
double y;
do
{
x = AverageRandom(min,max);
y = Normal(x,sita);
dScope = AverageRandom(0, Normal(x,sita));//进行比较,满足指数分布
}while( dScope > y);
return x;
}
void main()
{
int m;
int n;
int random_time;
int uniform_time;
double index_time;
int sita;
int temp;
cout<<"----------------------------"<<'\n';
cout<<"*****程序执行开始*****"<<'\n';
cout<<"请输入取值范围m,n"<<'\n';
cin>>m;
cin>>n;
change(m,n);
cout<<"再输入指数函数的@值"<<'\n';
cin>>sita;
srand((unsigned)time(0));//初始化时间为seed
random_time=rand()%m;//rand()%m得到srand的值并控制输出长度在m内
cout<<"本次随机数为"<<random_time<<'\n';
cout<<"区间最大值"<<m;
cout<<"最小值"<<n<<'\n';
cout<<"@值"<<sita<<'\n';
uniform_time=AverageRandom(n,m);
index_time=Normal(random_time,sita);
cout<<"其均匀分布为"<<uniform_time<<'\n';
cout<<"指数分布为"<<index_time<<'\n';
cout<<"******程序运行结束******"<<'\n';
cout<<"------------------------------"<<'\n';
main();//再运行,方便调试
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -