MATLAB unifrnd 与 rand函数的区别

本文探讨了MATLAB中的unifrnd与rand两个函数的区别与联系。两者均可生成均匀分布的随机数,但unifrnd属于统计工具箱,无法使用JIT加速;而rand则能指定随机数的数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MATLAB unifrnd 与 rand函数的区别

最近在生成随机数的时候看到这两个函数,通过查找资料发现二者的关系:

相同点:

  • 二者都是利用rand函数进行随机值计算。
  • 二者都是均匀分布。

不同点:

  • unifrnd是统计工具箱中的函数,是对rand的包装。

不是Matlab自带函数无法使用JIT加速。

  • rand函数可以指定随机数的数据类型。

实例
在区间[5,10]上生成400个均匀分布的随机数 :

 h1=unifrnd(5,10,1,400);
 h2=5+5*rand(1,400); % same pdf

二者生成的结果是相同的。

下面是unifrnd源代码,可以看出该函数可以通过指定参数进行计算。

function r = unifrnd(a,b,varargin)
%UNIFRND Random arrays from continuous uniform distribution.
%   R = UNIFRND(A,B) returns an array of random numbers chosen from the
%   continuous uniform distribution on the interval from A to B.  The size
%   of R is the common size of A and B if both are arrays.  If either
%   parameter is a scalar, the size of R is the size of the other
%   parameter.
%
%   R = UNIFRND(A,B,M,N,...) or R = UNIFRND(A,B,[M,N,...]) returns an
%   M-by-N-by-... array.
%
%   See also UNIFCDF, UNIFINV, UNIFPDF, UNIFSTAT, UNIDRND, RANDOM.

%   UNIFRND uses a linear transformation of standard uniform random values.

%   Copyright 1993-2018 The MathWorks, Inc. 

% Avoid    a+(b-a)*rand   in case   a-b > realmax
%
a2 = a/2;
b2 = b/2;
mu = a2+b2;
sig = b2-a2;

r = mu + sig .* (2*rand(sizeOut,'like',mu)-1);

% Fill in elements corresponding to illegal parameter values
if ~isscalar(a) || ~isscalar(b)
    r(a > b) = NaN;
elseif a > b
    r(:) = NaN;
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值