Is there any difference between rand(n,1) and unifrnd(0, 1, n, 1)?

 Réponse acceptée

They both generate sample from uniform distribution, unifrnd offers a possibility to enter the parameters while with rand you need to adjust them, example of uniform distribution of interval [5,10] with size of 400 :
h1=unifrnd(5,10,1,400);
h2=5+5*rand(1,400); % same pdf

3 commentaires

In fact, unifrnd will call rand and do the transformation for you. In this specific case though, there is no transformation needed.
r = mu + sig .* (2*rand(sizeOut)-1);
I find no unifrnd in base MATLAB, yet no toolbox is listed above.
@Image Analyst It's in Statistics toolbox

Connectez-vous pour commenter.

Plus de réponses (1)

There is less error checking in rand, which can be at times preferred... For example, if you need to generated random numbers between a and b, and it doesn't matter if a > b.
a = 5
b = -5
Then:
a+(b-a)*rand(1,400)
But you'll need to make sure a and b are properly ordered for unifrnd:
if (b < a)
[a, b] = deal(b, a);
end
unifrnd(a,b,1,400)
Or else your result will be a vector of NaNs.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by