?? rayleigh.cpp
字號:
/****************************************************
產生N=100個在(0,50)區間內滿足瑞利分布的隨機數
/*****************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define N 100
#define MAX 50
#define MIN 0
#define MIU 2
#define SIGMA 7
#define PI 3.14159
double AverageRandom(double min,double max)//產生(min,max)之間均勻分布的隨機數
{
int MINnteger = (int)(min*10000);
int MAXnteger = (int)(max*10000);
int randInteger = rand()*rand();
int diffInteger = MAXnteger - MINnteger;
int resultInteger = randInteger % diffInteger + MINnteger;
return resultInteger/10000.0;
}
double Rayleigh(double x,double miu,double sigma) //概率密度函數
{
return 2*x/(sigma*sigma)*exp(-x*x/(sigma*sigma)); //瑞利分布概率密度函數
}
double Random_Rayleigh(double miu,double sigma,double min,double max)//產生瑞利分布隨機數
{
double x;
double dScope;
double y;
do
{
x = AverageRandom(min,max);
y = Rayleigh(x, miu, sigma);
dScope = AverageRandom(0, Rayleigh(miu,miu,sigma));
}while( dScope > y);
return x;
}
void main(void)
{
srand(time(NULL));
int i,j;
for(i=0,j=0;i<N;i++)
{
printf("%14f", Random_Rayleigh(MIU,SIGMA,MIN,MAX));
j++;
if(j==5)
{
printf("\n"); //每行顯示5個數
j=0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -