Creating a Matrix of random numbers

31 vues (au cours des 30 derniers jours)
Blair Hail-Brown
Blair Hail-Brown le 21 Nov 2020
I'm trying to create a 20x20 matrix of values either -1 or 1, but randomly assigned. How can i do this? I've tried using the randi function but it returns the numbers as a range from -1 1 and so includes 0. any help would be appreciated

Réponse acceptée

Steven Lord
Steven Lord le 21 Nov 2020
possibleValues = [-1, 1];
desiredSize = [5 6];
A = possibleValues(randi(numel(possibleValues), desiredSize))
A = 5×6
-1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1
This assumes you want -1 and 1 to be equally likely. If you need an exact number of each possible value:
elements = [repmat(-1, 1, 5), repmat(1, 1, 25)];
order = randperm(numel(elements));
shuffled = reshape(elements(order), desiredSize)
shuffled = 5×6
1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1
If you need the two numbers not to be equally likely (say 1 three times as likely as -1) there are ways to do this as well.
  1 commentaire
Blair Hail-Brown
Blair Hail-Brown le 22 Nov 2020
Absolutely perfect, thank you so much!

Connectez-vous pour commenter.

Plus de réponses (4)

John D'Errico
John D'Errico le 21 Nov 2020
randi([0 1],20)*2 - 1

David Hill
David Hill le 21 Nov 2020
(-1).^randi(2,20);

Setsuna Yuuki.
Setsuna Yuuki. le 21 Nov 2020
A long way
bits= randi([-1 1],20,20);
[r,c,~] = size(bits);
count = 1;
while count < (r*c)+1
bits = reshape(bits,[1 r*c]);
if(bits(count) == 0)
bits(count) = randi([-1 1],1);
count = 1;
else
count = count + 1;
end
end
bits = reshape(bits,[r c]);

venkata datta sai krishna
venkata datta sai krishna le 25 Nov 2022
create a random integer 4*4 matrix A with rank equals 2(maximum only two columns are independent) and demonstrate above factorisation in matlab

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by