从1-8之间取1-8随机取3*10^6,总长为1.64*10^7。程序如下
clear all
c=1;
L1=8; S=1.64*10^7;N1=3*10^6;
while c>0%c是统计产生的随机数里面大于L1的个数,c=0时退出循环.初始值设为1
a=[];
a(1)=round(S*rand(1));
if(a(1)==0)
a(1)=1;
end
a(2)=S-a(1);%先将1分裂为两个随机数
while length(a)<N1
m=length(a);
[tt,ss]=sort(-a);
i=ss(1);%选择a中最大值作为分裂位置
%a(i)分裂为a(i)=q*a(i)和a(i+1)=(1-q)*a(i)
a(i+2:m+1)=a(i+1:m);%后移
q=0.2*rand(1)+0.4;
temp=a(i);
a(i)=round(a(i)*q);
if(a(i)==0)
a(i)=1;
end
a(i+1)=temp-a(i);
end
c=sum(a>L1);
end