Create 9x9 matrix with RANDI between [0,2] with each 0,1, and 2 repeating three times each per column.

조회 수: 25 (최근 30일)
I'm trying to create a 9x9 matrix with random number generation from 0 to 2 using RANDI:
X = randi([0,2], 9,9)
However, I want to force each of the 9 columns to show an equal distribution of 0's, 1's, and 2's (3 x of each number per column). I'm having difficulty finding a loop that can do this. Any help would be great (very new to this type of MATLAB work).
Thanks.

채택된 답변

Abdolkarim Mohammadi
Abdolkarim Mohammadi 2020년 9월 23일
편집: Abdolkarim Mohammadi 2020년 9월 23일
You can first create a vector with the values you need:
Reference = repelem (0:2,3)';
Then you initialize the 9x9 matrix with zeros(), and finally fill in the columns with random permutations of Reference using randperm().
  댓글 수: 6
Ryan Graham
Ryan Graham 2020년 9월 23일
Excellent, thank you very much for your help, this works and is a nice guide for me going forward. For future reference, if the Matrix is no longer a square, I should be able to just change the M= zeros (9) to a different number of rows and columns?
Abdolkarim Mohammadi
Abdolkarim Mohammadi 2020년 9월 23일
편집: Abdolkarim Mohammadi 2020년 9월 23일
Yes. But the number of rows should not change. For example: zeros (9,4). Otherwise, you should update Reference have the same number of elements as the number of rows in M.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Bruno Luong
Bruno Luong 2020년 9월 23일
편집: Bruno Luong 2020년 9월 23일
[~,A] = sort(rand(9)); A = mod(A,3)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by