フィルターのクリア

Creating a Matrix of random numbers

11 ビュー (過去 30 日間)
Blair Hail-Brown
Blair Hail-Brown 2020 年 11 月 21 日
回答済み: venkata datta sai krishna 2022 年 11 月 25 日
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

採用された回答

Steven Lord
Steven Lord 2020 年 11 月 21 日
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 件のコメント
Blair Hail-Brown
Blair Hail-Brown 2020 年 11 月 22 日
Absolutely perfect, thank you so much!

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

その他の回答 (4 件)

John D'Errico
John D'Errico 2020 年 11 月 21 日
randi([0 1],20)*2 - 1

David Hill
David Hill 2020 年 11 月 21 日
(-1).^randi(2,20);

Setsuna Yuuki.
Setsuna Yuuki. 2020 年 11 月 21 日
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 2022 年 11 月 25 日
create a random integer 4*4 matrix A with rank equals 2(maximum only two columns are independent) and demonstrate above factorisation in matlab

カテゴリ

Help Center および File ExchangeRandom Number Generation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by