Generating random ones and zeros controllably
Show older comments
I am making a simple game in MATLAB that requires ones and zeros to be generated in a 5x5 matrix. I want to prespecify the number of ones and let the program generate them randomly among the zeros in the matrix. I tried using the rand function but I couldn't find a way to do the above.
How can I generate the required matrix?
Accepted Answer
More Answers (2)
doc randperm % note the second optional input...
Will leave as "exercise for the student" the actual application but is straightforward... :)
ADDENDUM
See some verbose ways so I'll throw in another...shorter is simply
N=5; % array size (dimension)
nOnes=10; % number of ones
a=zeros(N); % allocate the array
a(randperm(numel(a),nOnes))=1; % set the one locations
Charles Dunn
on 23 Mar 2016
Interesting question. There are probably a couple ways to do this. I would check out the randperm function.
sz = [5 5];
N = prod(sz);
n = 5;
vals = cat(2,ones(1,n),zeros(1,N - n));
result = reshape(vals(randperm(N)),sz);
Categories
Find more on Random Number Generation 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!