Из того, что я понял, для каждой из N
случайных точек вы хотите перевернуть монетку, чтобы решить, выбрать ее или нет (где монета имеет p=0.25
вероятность успеха!)
data = rand(N,2); %# generate random points
index = (rand(N,1) <= p); %# roll coins to pick with prob p
data(~index, :) = []; %# keep only selected points
Это в конечном итоге эквивалентно генерации p*N
случайных точек в первую очередь (по крайней мере, вы приближаетесь к этому числу, когда N
увеличивается) ...
data = rand(p*N, 2); %# directly generate p*N number of points
Вы можете проверить это последнее утверждение для различных значений N:
fprintf('1st = %d \n', p*N)
fprintf('2nd = %d \n', sum(rand(N,1) <= p))