回 帖 发 新 帖 刷新版面

主题:我想做一个10*10的矩阵,里面的所有元素都是0或1,由MATLAB随机产生

大家好初次见面我想请教大家一个问题
我想做一个10*10的矩阵,里面的所有元素都是0或1,由MATLAB随机产生
但是更深层的要求是,我希望里面的1的数量是20个相应的0的数量是80个
这个要求需要怎么达到啊

我知道c=randint(10,10)
能产生0和1的随机矩阵,但是里面的0/1的数量怎么控制啊请大家帮忙
谢谢大家
我的QQ8037450

回复列表 (共11个回复)

沙发

不是很好搞
用循环  加  判断   试试!

板凳

n=0*ones(10,10);
m=0;
while m < 20
    i=int8(rand*9+1);
    j=int8(rand*9+1);    
    n(i,j)=1;
    m=sum(sum(n));
end

3 楼


n=0*ones(10,10);
m=0;
while m < 20
    i=ceil(rand*10);
    j=ceil(rand*10);    
    n(i,j)=1;
    m=sum(sum(n));
end

4 楼

n=zeros(10);
m=0;
while m < 20
    i=ceil(rand*10);
    j=ceil(rand*10);    
    n(i,j)=1;
    m=sum(sum(n));
end

5 楼

A=zeros(10);
C=randperm(100);
A(C(1:20))=1;

6 楼

[quote]A=zeros(10);
C=randperm(100);
A(C(1:20))=1;[/quote]
高人!

7 楼

[quote]A=zeros(10);
C=randperm(100);
A(C(1:20))=1;[/quote]
good.

8 楼

tic;
A=zeros(10);
C=randperm(100);
A(C(1:20))=1;
toc

Elapsed time is 0.000131 seconds.
Elapsed time is 0.000128 seconds.
Elapsed time is 0.000129 seconds.
Elapsed time is 0.000138 seconds.
Elapsed time is 0.000129 seconds.
Elapsed time is 0.000129 seconds.
Elapsed time is 0.000259 seconds.
Elapsed time is 0.000128 seconds.
Elapsed time is 0.000129 seconds.
Elapsed time is 0.000130 seconds.
平均0.000143

tic;
n=zeros(10);
m=0;
while m < 20
    i=ceil(rand*10);
    j=ceil(rand*10);    
    n(i,j)=1;
    m=sum(sum(n));
end
toc

Elapsed time is 0.000105 seconds.
Elapsed time is 0.000117 seconds.
Elapsed time is 0.000103 seconds.
Elapsed time is 0.000120 seconds.
Elapsed time is 0.000116 seconds.
Elapsed time is 0.000103 seconds.
Elapsed time is 0.000108 seconds.
Elapsed time is 0.000107 seconds.
Elapsed time is 0.000111 seconds.
Elapsed time is 0.000239 seconds.
平均0.000122

9 楼

8错8错!

就是不知楼主意下如何!

10 楼

[quote]A=zeros(10);
C=randperm(100);
A(C(1:20))=1;[/quote]

牛人啊!!!
绝对的,

我来回复

您尚未登录,请登录后再回复。点此登录或注册