uniform.h
#pragma once
类统一
{
隐私:
double a,b,generate_num;
int * seed;
int s;
int M,n,I,j;
公共:
统一() )
{
M=1048576;
N=2045;
}
void generate (;
双精度随机_编号(双精度,双精度,int *;
(;
双统一:3360 random _ number (双精度,双精度b,int * seed ) ) ) ) ) ) 0
{
(**seed )=n* ) seed ) 1;
(***seed )=) seed )-) ) seed )/M ) m;
generate _ num=static _ cast double ((* seed ) )/M;
generate_num=a(B-a ) * generate_num;
返回(generate _ num;
}
weibull.h
#pragma once
#include math.h
#include 'uniform.h '
类Weibull
{
隐私:
双精度a、b、u、x、generate_num;
int * seed;
int s,I,j;
公共:
weibull () }
void generate (;
双精度随机_编号(双精度,双精度,int *;
(;
double Weibull :3360 random _ number (doublea,double b,int * seed ) ) ) ) ) ) ) ) )。
{
统一unif _ num;
u=unif _ num.random _ number (0.0,1.0,seed );
u=-log(u;
x=b*pow(u,1.0/a );
返回(x;
}
weibull.cpp
//产生50个阿尔法=2、贝塔=1的韦伯分布的随机数
#include iostream
#包含iomanip
#include 'Weibull.h '
用户命名空间STD;
Void主() )
{
Weibull解决方案;
solution.generate (;
}
void weibull:generate (
{
cout '韦伯分布的参数alpha:';
cin a;
cout '韦伯分布的参数beta:';
cin b;
cout '输入随机数种子。' ;
cin s;
cout '生成随机数的结果是' endl;
for(I=0; i 10; I )
{
for(j=0; j 5; j )
{
generate_num=random_number(a,b,s );
coutsetw(10 ) generate_num;
}
cout endl;
}
}