如何在MATLAB中从N个点中随机选择k个点?

gur*_*der 10 matlab

我使用此代码来创建和绘制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,'*');
Run Code Online (Sandbox Code Playgroud)

如何从k点中选择点(有概率p=0.25)N,然后将这些k点着色为红色并将其他点保留为*.

gno*_*ice 27

您可以采取两种方法.第一个解决方案是随机挑选k的值N值,这将确保你总是k选择的点.第二种解决方案是与每个具有平均概率随机选择的值p被选择的,这可能导致在少0或多达N被随机选择.

  • kN价值中挑选:

    您可以使用该功能RANDPERM创建整数的随机排列1通过N,然后选择第一个k值置换后的名单,并重新绘制他们为红:

    index = randperm(N);
    plot(x(index(1:k)),y(index(1:k)),'r*');
    
    Run Code Online (Sandbox Code Playgroud)
  • 以平均概率选择值p:

    您可以使用RAND函数来挑选一个随机值01为每个的N值,然后选择那些具有随机值小于或等于你的平均概率p,并重新绘制他们为红:

    index = (rand(N,1) <= p);
    plot(x(index),y(index),'r*');
    
    Run Code Online (Sandbox Code Playgroud)