MATLAB Answers

joy
0

20 value from a normal distribution..

Asked by joy
on 7 May 2015
Latest activity Commented on by joy
on 7 May 2015
Hi,
I have mu and sigma (stand deviation) i.e. mean=20 and sigma=4. I am generating data with normal distribution from these parameters.
I need to select 20 values ranges between 8 to 32 from this distribution..How to do so?
Thanks in advance
Mu = 20;
sigma = 4;
N = normrnd(Mu, sigma, 100000, 1);
N=round(N);
hist(N,0:1:60);

  0 Comments

Sign in to comment.

Tags

1 Answer

Answer by Michael Haderlein on 7 May 2015
Edited by Michael Haderlein on 7 May 2015
 Accepted Answer

First, make sure that there are enough numbers available (with the values you use, this might not be a problem):
lo=8;hi=32;num=20;
while sum(N>=lo & N<=hi)<num
N(N<lo | N>hi)=round(normrnd(Mu,sigma,sum(N<lo | N>hi),1));
end
Then, take the first 20 values which are in the respective interval:
ind=find(N>=lo & N<hi,num,'first');
N(ind)

  5 Comments

joy
on 7 May 2015
p1=20;
lo=8;hi=32;num=2*p1;
while sum(N>=lo & N<=hi)<num
N(N<lo | N>hi)=round(normrnd(Mu,sigma,sum(N<lo | N>hi),1));
end
ind=find(N>=lo & N<hi,num,'first');
q=round(N(ind));
q=q';
w1=q(1:num/2); %%%%%one set of 20 values
h1=q(num/2+1:end); %%%%%another set of 20 values
is it correct way? Did I get u correctly?
Looks good. You don't need to round again when you create q. Also, instead of num/2, you can use p1 again. When finding the indices, you have N<hi instead of N<=hi. The rest should be fine.
joy
on 7 May 2015
Thank you. I shall make those corrections.

Sign in to comment.