我使用此代码创建并绘制N
点:
N=input('No. of Nodes:');
data = rand(N,2) % Randomly generated n no. of nodes
x = data(:,1);
y = data(:,2);
plot(x,y,'*');
如何从k
点中选择p=0.25
点(概率N
),然后将这些k
点着色为红色,将其他点保留为{{1 }}
答案 0 :(得分:27)
您可以采取两种方法。第一种解决方案是从k
值中随机选择N
值,这将确保总是选择k
个点。第二种解决方案是随机选取值,每个值都选择了平均概率p
,这可能导致随机选择0
或N
一样少。
答案 1 :(得分:3)
根据我的理解,对于每个N
随机点,您想要翻转硬币以决定是否选择它(硬币的成功概率为p=0.25
!)< / p>
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))