根据对数正态分布产生随机数

系统自带的对数正态分布函数lognrnd

  • example

    m = 1; % 分布的均值
    v = 2; % 分布的方差
    mu = log((m^2)/sqrt(v+m^2)); % 公式中的均值参数
    sigma = sqrt(log(v/(m^2)+1)); % 公式中的方差参数
    
    [M,V]= lognstat(mu,sigma); % 可以验证随机数的均值与方差的正确性
    
    X = lognrnd(mu,sigma,1,1e6); % 产生随机数
    
    hist(log(X), 100) % 画出随机数的对数正态分布函数图
    

图片:这里写图片描述

  • slicesample函数产生随机数

    sigma = 3; %方差
    r0 = 10;   %均值
    f = @(logR) exp( -( logR - log(r0) ).^2/(2*sigma^2) ) / (sqrt(2*pi) * sigma ); %分布函数
    area = integral( f, 5, 15 );
    
    N = 2000;  %随机数的个数
    x = slicesample( 3, N, 'pdf', f );
    
    [binheight,bincenter] = hist(x,200);
    h = bar(bincenter,binheight,'hist');
    
    x = exp( x ); %得到最终需要的值
    

图片:这里写图片描述

  • 注:如果直接在匿名函数中写log(r)(r是变量),则会报错The step-out procedure failed.迭代次数超过最大限制了。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值