Rejection sampling on uniform distribution?

Illustration
matlabkid602 - 2022-07-15T11:49:54+00:00
Question: Rejection sampling on uniform distribution?

How can I use matlab to perform rejection sampling on a uniform distribution using rand, to pick 20% of samples in the range 0 to 0.2 and the other 80% between 0.2 and 1?

Expert Answer

Profile picture of Kshitij Singh Kshitij Singh answered . 2025-11-20

Try this:

 

numPoints = 1000  % Total number of points to save.
numLow = 1;
numHigh = 1;
% Start collecting elements using acceptance if in range,
% and rejection if out of range.
for k = 1 : 10000000  % enough to make sure we will collect at least numPoints elements.
  r = rand();
  % Save the number if it's in the low range.
  if r <= 0.2 && numLow <= 0.20 * numPoints
    % In range.  Store/save the number.
    lowKeepers(numLow) = r;
    numLow = numLow + 1;
  else
    % Not in range so reject/ignore it.
  end
  % Save the number if it's in the high range.
  if r >= 0.8 && numHigh <= 0.80 * numPoints
    % In range.  Store/save the number.
    highKeepers(numHigh) = r;
    numHigh = numHigh + 1;
  else
    % Not in range so reject/ignore it.
  end
end

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!