fengfeihua 发表于 2011-8-22 09:35:42

如何用matlab生成随机数

请问大家,如何用matlab生成随机数,比如有200个数,每个数被抽到的概率相同,我想从这200个数中每次抽出50个,共抽30次,如何实现呀?

擎天大侠 发表于 2011-8-22 11:02:00

我用matlab循环,你看看:
for i=1:200
    a(1,i)=rand*100;%生成200个随机数
end
j=0;
d=zeros(1,50)
N=30;
farm=cell(N,2);
for j=1:30
for k=1:50
    b=ceil(rand*200);
    c=a(1,b);
    d(1,k)=c;
end
farm(j,:)=[{j},{d}];
end

ZanDZ 发表于 2011-8-22 15:24:22

最好加句:rand('state',sum(100*clock));
不然每次运行的结果都一样

fengfeihua 发表于 2011-8-29 10:06:37

本帖最后由 fengfeihua 于 2011-9-27 08:54 编辑

谢谢大家了,我还有一个问题就是在生成的一组随机数中有时会有某几个数重复出现的情况,比如我抽了50个数,其中数字10出现了三次,如果在生成随机数的过程中避免数字出现重复应该对下面的程序进行怎么修改呀?谢谢大家了
for i=1:200
    a(1,i)=randi(200);%生成200个随机数
end
j=0;
d=zeros(1,50)
N=30;
farm=cell(N,2);
for j=1:30
for k=1:50
    b=ceil(rand*200);
    c=a(1,b);
    d(1,k)=c;
end
farm(j,:)=[{j},{d}];
endfid = fopen('exp.txt','a');for i=1:30a=farm{i,2};fprintf(fid,'%5.0f%5.0f\n',a);endfarm{n,2}%2不变,前面n为1-30
页: [1]
查看完整版本: 如何用matlab生成随机数