A:
天软随机数产生的函数及算法简介
算法与随机种子:FAQ:
Q:Rand和Randg的算法,如何得到随机数
随机数基础函数:
random:产生一个随机数
Rand:产生一个随机数组
扩展函数:
RandomFrom:随机返回一个数组的元素,随机样本
按指定分布生成随机数,可由两种方式产生:
1、调用随机数函数,函数名由Rand+分布类型,具体可查看
FAQ:
统计分布
比如,服从正态分布的随机函数Randnorm,服从柯西分布的函数RandCauchy等
2、调用Rand函数,参数中给出分布参数,具体可参考:FAQ:
随机函数列表:
| 概率密度 | 分布函数 | 分布逆函数 | 随机数 | 估计函数 | Rand中对应的类型
|
---|
离散均匀分布 | sf_unidpdf | sf_unidcdf | sf_unidinv | randunid | |
|
几何分布 | sf_geopdf | sf_geocdf | sf_geoinv | Randgeo | | Geometric
|
超几何分布 | sf_hygepdf | sf_hygecdf | sf_hygeinv | Randhyge | | Hypergeometric
|
二项分布 | sf_binopdf | sf_binocdf | sf_binoinv | Randbino | binofit | Binomial
|
负二项分布 | sf_nbinpdf | sf_nbincdf | sf_nbininv | Randnbin | |
|
均匀分布 | sf_unifpdf | sf_unifcdf | sf_unifinv | Randunif | uniffit | Uniform
|
泊松分布 | sf_poissonpdf | sf_poissoncdf | sf_poissoninv | Randpoisson | poissfit | posisson
|
指数分布 | sf_exppdf | sf_expcdf | sf_expinv | Randexp | expfit | Exp
|
正态分布 | sf_normpdf | sf_normcdf | sf_norminv | Randnorm | | normal
|
卡方分布 | sf_ch2pdf | sf_ch2cdf | sf_ch2inv | Randch2 | |
|
学生T分布 | sf_tpdf | sf_tcdf | sf_tinv1 | Randt | |
|
F分布 | sf_fpdf | sf_fcdf | sf_finv1 | Randf | |
|
gam分布 | sf_gampdf | sf_gamcdf | sf_gaminv | Randgam | | Gamma
|
beta分布 | sf_betapdf | sf_betacdf | sf_betainv1 | Randbeta | | Beta
|
瑞利分布 | sf_raylpdf | sf_raylcdf | sf_raylinv1 | Randrayl1 | | Rayleigh
|
威布尔分布 | sf_wblpdf | sf_wblcdf | sf_wblinv | Randwbl | | Weibull
|
对数正态分布 | sf_lognpdf | sf_logncdf | sf_logninv | Randlohn | | Lognormal
|
拉普拉斯分布 | sf_Laplacepdf | sf_Laplacecdf | sf_Laplaceinv | RandLaplace | | Laplace
|
柯西分布 | sf_ Cauchypdf | sf_ Cauchycdf | sf_ Cauchyinv | RandCauchy | | Cauchy
|
使用范例:
随机数:random
函数说明:FAQ:
random
范例01:无参数方式,得到随机小数(0,1)
return random();//产生一个0到1之间的随机实数
范例02:带参数方式,得到随机整数[0,Value)
return random(100);//产生一个0到100之间的随机整数,注意,包括0,不包括100。
随机数数组:Rand
函数说明:FAQ:
范例03:产生一个随机数序列
//随机小数(0,1)
return rand(5);
//随机整数(0,100)
return Integer(100*rand(5));
//服从标准正态分布的随机数
return rand(5,nil,array('normal',0,1));
//或return Randnorm(0,1,5);
范例04:产生一个随机数数组
//随机小数(0,1)
return rand(5,3);
//随机整数(0,100)
return Integer(100*rand(5,3));
//服从标准正态分布的随机数
return rand(5,3,array('normal',0,1));
//或Randnorm(0,1,5,3);
范例05:产生一个总和为1的随机数序列
t:=rand(10);
v:=sum(t);
return t/v;
范例07:产生多维的随机数序列
//服从标准正态分布的四维随机数数组,只有Rand支持多维(大于二维)
return rand(3,4,array("normal",0,1),5,4);
随机样本:RandomFrom
函数说明:FAQ:
randomfrom
范例06:从样本序列中随机抽取一个元素
t:=1->100;
return randomFrom(t);//返回一个整数
t:=array('a','b','c','d','e','f');
return randomFrom(t);//返回一个字符串
范例06:从样本中随机抽取一组样本
t:=array(('a',1),('b',2),('c',3),('d',4),('e',5),('f',6));
return randomFrom(t);
返回:array("d",4) //是一个数组,即样本数组中的一行