san2006 发表于 2007-5-13 20:01

两个集合之差的问题

我想请教一下,比如有一个长950的向量,
值是从1到1000之间的整数,互不重复
怎样求出1到1000之间其余的50个数字呢
多谢各位了啊:@)

[ 本帖最后由 eight 于 2007-5-14 09:56 编辑 ]

yangzj 发表于 2007-5-13 20:33

这个问题有点意思,我试着写了下:

M=1000;
m=1:M;

N=950;
n=floor(randn(1,N)*(N-1))+1;

mt=zeros(size(m));
mt(n)=1;

result=m(find(mt==0));

这里的950个整数可能有重复,但重复的时候是对的,对于不重复的情况肯定也是对的。
呵呵,看看大家有什么更有效的方法

eight 发表于 2007-5-14 09:53

我也写了一个:
A = randperm(1000);
B = setdiff(, A(1:950));

yangzj 发表于 2007-5-14 10:57

原帖由 eight 于 2007-5-14 09:53 发表 http://www.chinavib.com/forum/images/common/back.gif
我也写了一个:
A = randperm(1000);
B = setdiff(, A(1:950));


呵呵,还是eight高明

rocwoods 发表于 2007-5-14 11:18

偶也来一个:
A = randperm(1000);
B=1:1000;
C=B(~ismember(B,A(1:950)))

san2006 发表于 2007-5-14 16:34

哈哈,多谢各位的回答,
很有帮助啊,大大节省了存储空间
发现我都不知道这些函数,最初是将这950个数挨个与那1000个数比较,
相同的话设置标志位,好多次循环啊,:@L
呵呵,谢谢,俺会好好学习的:loveliness:
页: [1]
查看完整版本: 两个集合之差的问题