Can anyone help me to generate a matrix of 0's and 1's randomly in which each contains only one 1 like [ 0 1 0 0 0; 1 0 0 0 0; 0 0 0 1 0].
3 views (last 30 days)
Show older comments
MANISH KUMAR
on 17 Jun 2016
Answered: Jos (10584)
on 17 Jun 2016
for example
[0 1 0 0 0; 1 0 0 0 0; 0 0 0 1 0]
0 Comments
Accepted Answer
Andrei Bobrov
on 17 Jun 2016
Edited: Andrei Bobrov
on 17 Jun 2016
[~,ii] = sort(rand(3,5),2)
out = ii == 1
or
out = zeros(3,5)
[m,n] = size(out);
out(sub2ind([m,n],1:m,randperm(n,m))) = 1
3 Comments
Shameer Parmar
on 17 Jun 2016
@Andrei: your first solution producing sometime repeated values..like..
out =
1 0 0 0 0
1 0 0 0 0
0 0 1 0 0
and in second solution, what is m and n ?
More Answers (2)
Jos (10584)
on 17 Jun 2016
One 1 in each ... what? rows, columns, or both?
Given your examples and comment I assume both, so here is a simple one-liner. NR and NC are the number of rows and columns, respectively. Note that NC should be larger or equal to NR
A = full(sparse(1:NR, randperm(NC,NR), 1, NR, NC))
0 Comments
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!