找回密码
 注册
Simdroid-非首页
查看: 212|回复: 3

如何用matlab生成随机数

[复制链接]
发表于 2011-8-22 09:35:42 | 显示全部楼层 |阅读模式 来自 吉林长春
请问大家,如何用matlab生成随机数,比如有200个数,每个数被抽到的概率相同,我想从这200个数中每次抽出50个,共抽30次,如何实现呀?
发表于 2011-8-22 11:02:00 | 显示全部楼层 来自 湖北宜昌
Simdroid开发平台
我用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
回复 1 不支持 0

使用道具 举报

发表于 2011-8-22 15:24:22 | 显示全部楼层 来自 福建福州
最好加句:rand('state',sum(100*clock));
不然每次运行的结果都一样
回复 不支持

使用道具 举报

 楼主| 发表于 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}];
end
fid = fopen('exp.txt','a');
for i=1:30
a=farm{i,2};
fprintf(fid,'%5.0f  %5.0f\n',a);
end
farm{n,2}
%2不变,前面n为1-30
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-19 15:49 , Processed in 0.036977 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表