FAQ > 金融建模 > 建模问题 > 数学相关

Q:天软随机数    

  • A:天软随机数产生的函数及算法简介
    算法与随机种子:FAQ:Q:Rand和Randg的算法,如何得到随机数
    随机数基础函数:
    random:产生一个随机数
    Rand:产生一个随机数组

    扩展函数:
    RandomFrom:随机返回一个数组的元素,随机样本

    按指定分布生成随机数,可由两种方式产生:
    1、调用随机数函数,函数名由Rand+分布类型,具体可查看
     FAQ:统计分布
    比如,服从正态分布的随机函数Randnorm,服从柯西分布的函数RandCauchy等
    2、调用Rand函数,参数中给出分布参数,具体可参考:FAQ:
    随机函数列表:
    概率密度分布函数分布逆函数随机数估计函数Rand中对应的类型
    离散均匀分布sf_unidpdfsf_unidcdfsf_unidinvrandunid
    几何分布sf_geopdfsf_geocdfsf_geoinvRandgeoGeometric
    超几何分布sf_hygepdfsf_hygecdfsf_hygeinvRandhygeHypergeometric
    二项分布sf_binopdfsf_binocdfsf_binoinvRandbinobinofitBinomial
    负二项分布sf_nbinpdfsf_nbincdfsf_nbininvRandnbin
    均匀分布sf_unifpdfsf_unifcdfsf_unifinvRandunifuniffitUniform
    泊松分布sf_poissonpdfsf_poissoncdfsf_poissoninvRandpoissonpoissfitposisson
    指数分布sf_exppdfsf_expcdfsf_expinvRandexpexpfitExp
    正态分布sf_normpdfsf_normcdfsf_norminvRandnormnormal
    卡方分布sf_ch2pdfsf_ch2cdfsf_ch2invRandch2
    学生T分布sf_tpdfsf_tcdfsf_tinv1Randt
    F分布sf_fpdfsf_fcdfsf_finv1Randf
    gam分布sf_gampdfsf_gamcdfsf_gaminvRandgamGamma
    beta分布sf_betapdfsf_betacdfsf_betainv1RandbetaBeta
    瑞利分布sf_raylpdfsf_raylcdfsf_raylinv1Randrayl1Rayleigh
    威布尔分布sf_wblpdfsf_wblcdfsf_wblinvRandwblWeibull
    对数正态分布sf_lognpdfsf_logncdfsf_logninvRandlohnLognormal
    拉普拉斯分布sf_Laplacepdfsf_Laplacecdfsf_LaplaceinvRandLaplaceLaplace
    柯西分布sf_ Cauchypdfsf_ Cauchycdfsf_ CauchyinvRandCauchyCauchy



    使用范例:
    随机数: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) //是一个数组,即样本数组中的一行