# Equal Sized random assortment, using randi?

조회 수: 2(최근 30일)
Chris Keightley 2021년 5월 2일
댓글: Chad Greene 2021년 5월 3일
Hello everyone,
I have used the following code to generate a matrix of random integers (1's and 2's). However, I am finding myself with an unequal amount of random integers in each column (e.g., eleven "1's" and eight "2's" in some columns). I would like to know how I could get a fixed amount of equally sized conditions using this function. In where, I could get ten "1's" and ten "2's" equally spread among all six columns, that still maintains a random order. Am I using the right function (randi) to do accomplish this? Please let me know if I am unclear with my question.
Kind regards,
T = [ ];
ii=1;
while ii<=20;
T(ii,:)= randi(2,1,8);
ii=ii+1;
end;

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

### 채택된 답변

Image Analyst 2021년 5월 2일
Chris: first you need to create a column vector with the desired number of 1s and 2s in the column. Then you need to use randperm() to scramble the order and stick it in your output array:
num1s = 10; % Whatever you want
num2s = 10; % Whatever you want
% Make a column vector with the specified number of 1s and 2s in it.
unscrambled = [ones(num1s, 1); 2 * ones(num2s, 1)]
rows = length(unscrambled);
columns = 16; % Whatever you want
output = zeros(rows, columns);
% Scramble and place into the output matrix.
for col = 1 : columns
sortOrder = randperm(rows);
output(:, col) = unscrambled(sortOrder);
end
output % See it in the command window.
##### 댓글 수: 5표시숨기기 이전 댓글 수: 4
Oh heck, you're right @Image Analyst. I misread, thinking that unscrambled was a matrix.

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

### 추가 답변(1개)

편집: Chad Greene 2021년 5월 2일
This would be one way to define how many ones and how many twos in each column before randomizing them:
N_cols = 8; % number of columns
N_ones = 10; % number of ones in each column
N_twos = 10; % number of twos in each column
M = [ones(N_ones,N_cols);2*ones(N_twos,N_cols)];
imagesc(M)
% Shuffle the order of each column:
for k = 1:N_cols
M(:,k) = M(randperm(N_ones+N_twos),k);
end
imagesc(M)
##### 댓글 수: 1표시숨기기 없음
Chris Keightley 2021년 5월 2일
Wow, truly mind-blowing, thanks a lot Chad, love the pictorial demonstration as well.

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

### Community Treasure Hunt

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

Start Hunting!

Translated by