How to distribute 100 ones in 100 by 100 matrix randomly in all posibilities

조회 수: 2 (최근 30일)
I want to make binary matrix, and distribute 100 ones in it, randomly in all possibilities.
What command I have to use plz help.

채택된 답변

Wayne King
Wayne King 2012년 2월 10일
indices = randi(1e4,100,1);
x = zeros(100,100);
x(indices) = 1;
  댓글 수: 9
Walter Roberson
Walter Roberson 2012년 2월 16일
There are 65208469245472575695415972927215718683781335425416743372210247172869206520770178988927510291340552990847853030615947098118282371982392705479271195296127415562705948429404753632271959046657595132854990606768967505457396473467998111950929802400 different matrices
which is about 6.5 * 10^241
It *is* possible to list them all, if you do not need to store them, but it would take a *very* long time to do the listing.
Amit
Amit 2012년 2월 16일
What command I have to use that gives me exactly 100 ones randomly in 100 by 100 binary matrix

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Jan
Jan 2012년 2월 16일
You can add a test to Wayne's method to check if the indices are unique:
go = true;
while go
indices = randi(1e4,100,1);
go = numel(unique(inidices)) == 100;
% Or:
% go = all(diff(sort(indices)));
end
x = zeros(100,100);
x(indices) = 1;
Another approach, which works since Matlab 2011b:
indices = randperm(1e4, 100);
If this is time-critical, you can try FEX: Shuffle.

Walter Roberson
Walter Roberson 2012년 2월 16일
idx = randperm(100*100);
x = false(100,100); %you said you wanted a _binary_ matrix
x(idx(1:100)) = true;
If you have a new enough version of MATLAB,
idx = randperm(100*100,100);
x = false(100,100);
x(idx) = true;

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by