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

1 回表示 (過去 30 日間)
Amit
Amit 2012 年 2 月 10 日
編集済み: Image Analyst 2013 年 10 月 15 日
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.
  2 件のコメント
Amit
Amit 2012 年 2 月 16 日
@Jan Simon
It still varying
Walter Roberson
Walter Roberson 2012 年 2 月 16 日
What do you mean by "it is still varying" ?

サインインしてコメントする。


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 Center および File ExchangeLogical についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by