A question about matrix

5 views (last 30 days)
Johnny
Johnny on 8 Dec 2019
Commented: Johnny on 8 Dec 2019
By following codes, I get a 50x50 matrics with randon 1 and 0. Now I want to specify how many 1 and how many 0 are in this 50x50 matrics, and I want them in randon positions.
Thank you very much for your helps!
nside=50;
randworld=round(rand(nside,nside));
world=randworld>.5;

Accepted Answer

Image Analyst
Image Analyst on 8 Dec 2019
Use randperm:
nside=50;
world = zeros(nside, nside);
num1sToInsert = 4;
randomIndexes = randperm(numel(world), num1sToInsert)
world(randomIndexes) = 1
  4 Comments
Image Analyst
Image Analyst on 8 Dec 2019
Edited: Image Analyst on 8 Dec 2019
Johnny, recall you said "I want to specify how many 1 and how many 0 are", and if you look in the documentation for randperm, the second argument is the number of numbers you want to get and assign 1 to. For example if you have 50-by-50 matrix, then there are 2500 elements in that matrix. So randperm will get a scrambled array of every index from the upper left (index 1) to the lower right (index 2500) - basically all numbers from 1 to 2500 scrambled up, if you don't specify the second argument. If you DO specify a second argument, then it won't return all 2500 - we don't need all 2500 - it will return however many you ask for in the second argument. So let's say you wanted to have 4 1's and 2496 0's. Well
randomIndexes = randperm(numel(world), num1sToInsert)
will return exactly 4 indexes randomly located somewhere within those 2500 elements. This is basically the same as
randomIndexes = randperm(2500, 4) % Return 4 numbers chosen randomly between 1 and 2500.
Then I use those indexes to set the matrix at those indexes to 1.
Johnny
Johnny on 8 Dec 2019
Thank you very much!it is very clear!
Really appreciate for your helps!

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements 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!