我随手编个m文件给你试试吧。编的有点复杂了。呵呵。
clear all;
data =rand(1,50);
N_div = 10;
nn =size(data); N=nn(2);
%%%% randomly redistribute this N numbers
IsRepeated = 1;
RDis(1) = 0;
for i =1:N
IsRepeated = 1;
while(IsRepeated == 1)
J = floor(rand*N+1) ;
if(i==1)
IsRepeated = 0;
end
if(i>1)
IsRepeated = 0;
for j=1:i-1
if(J==RDis(j))
IsRepeated = 1;
end
end
if(J>N)
IsRepeated = 1;
end
end
end
RDis(i) =J;
end
%%% insert random blocks between numbers (balls).
IsRepeated = 1;
BDis(1) = 0;
for i =1:N_div-1
IsRepeated = 1;
while(IsRepeated == 1)
J = floor(rand*(N-1)+1) ;
if(i==1)
IsRepeated = 0;
end
if(i>1)
IsRepeated = 0;
for j=1:i-1
if(J==BDis(j))
IsRepeated = 1;
end
end
if(J>N-1)
IsRepeated = 1;
end
end
end
BDis(i) =J;
end
BDis = sort(BDis);
NumDis(1,1:BDis(1)) = RDis(1:BDis(1));
NumD (1) = BDis(1);
for i=1:N_div-2
NumDis(i+1,1:BDis(i+1)-BDis(i)) =RDis(BDis(i)+1:BDis(i+1));
NumD (i+1) = BDis(i+1)-BDis(i);
end
NumDis(N_div,1:N-BDis(N_div-1)) = RDis(BDis(N_div-1)+1:N);
NumD (N_div) = N-BDis(N_div-1);
NumDis,