Random number generate in an interval
    3 views (last 30 days)
  
       Show older comments
    
Hi community, 
I would like to generate random number in the follow distribuition: Normal, Gamma and Weibull. 
Amount of data required: 5000 numbers at interval [a,b]
At the example, it was used the follow code: 
A = linspace(0,1,5000)
sr = size(A)
b = normrnd(27.5,15.73,sr)
plot(b)
Its works, however, the valid interval to generate was [1,54] 
Can us help me, please? 
Yours faithfully
7 Comments
  Walter Roberson
      
      
 on 14 Sep 2023
				Right, different interpretations of what "clipping" means in the context.
format long g
b = normrnd(27.5,15.73,[1 500000]);
out_of_range = (b < 1) | (b > 54);
mean(out_of_range) * 100
so over 9% of the samples are outside of the target range
  Walter Roberson
      
      
 on 22 Sep 2023
				It works!  Thank you very much 
Answers (2)
  the cyclist
      
      
 on 14 Sep 2023
        
      Edited: the cyclist
      
      
 on 14 Sep 2023
  
      A normal distribution, by definition, has support from negative infinity to positive infinity. You cannot have both a normal distribution and a finite range.
You can use the truncate function to create a truncated normal distribution object, and draw values from that. (See the second example on that page.) Is that what you want?
0 Comments
  Bruno Luong
      
      
 on 14 Sep 2023
        
      Edited: Bruno Luong
      
      
 on 15 Sep 2023
  
      The file TruncatedGaussian.m is from this page https://www.mathworks.com/matlabcentral/fileexchange/23832-truncated-gaussian?s_tid=srchtitle 
This doesn't need stat toolbox.
sigma = 15.73;
mu = 27.5;
interval = [1 54];
n = [1, 5000000];
X = TruncatedGaussian(-sigma,interval-mu,n) + mu;
histogram(X)
0 Comments
See Also
Categories
				Find more on Random Number Generation in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

