Dear, I would like to generate random nmbers with a normal distribution. From the documentation I see that there are two functioncs that seem to make the same things. normrnd(mu,sigma) and random('Normal',mu,sigma)
I wrote these two simpole for-loop in order to evaluate time consumption of these two functions and I found that normrnd is less time-consuming than random. I don't understand this difference. Could you help me?
tic for i=1:1000000 ciao=ciao+normrnd(0,0.01); end toc
tic for i=1:1000000 ciao=ciao+random('Normal',0,0.01); end toc
Kind regards
Andrea Giostri

 采纳的回答

Titus Edelhofer
Titus Edelhofer 2011-6-20

0 个投票

Hi,
if you open random with an editor and search for "normrnd", you will see, that random in fact calls normrnd. That's why it takes a little more time. On the other hand: if you call normrnd and random one time with N=1000000 instead of N calls in a loop, it won't make a difference at all ...
Titus

4 个评论

There is also randn, which is slightly faster than either of the alternatives:
N = 10000;
mu = 0;
sigma = 0.01;
clear ciao
tic
ciao = sigma*sum(randn(N));
toc
clear ciao
tic
ciao = sum(normrnd(mu,sigma,N));
toc
clear ciao
tic
ciao = sum(random('Normal',mu,sigma,N));
toc
Elapsed time is 2.800175 seconds.
Elapsed time is 3.497521 seconds.
Elapsed time is 3.473260 seconds.
However, when I tried to increase N to 100000, my computer ran out of memory (and it has 12 GB).
Hi Andrew,
common mistake I often do as well: randn(N) is not randn(N,1) but randn(N,N). I'm not surprised this will blow your memory with N=100000 ;-).
Titus
Aaagh! Right at the top of http://www.mathworks.com/matlabcentral/answers/1759-dumb-mistakes-we-make-with-matlab! Thanks for reminding me.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Climate Science and Analysis 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by