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

📄 main.cpp

📁 (1)满足均匀分布的[M,N]区间随机数
💻 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 + -