Making a matrix of R*C size that takes the values randomly from an array- Y.

5 views (last 30 days)
I want to make a random matrix of R*C size that takes the values randomly from an array Y.
For example I want to make a 7*8 matrix that takes value from this array Y = [ 1 6 1 8 4 5], and place them randomly in the matrix.. I have tried randi command to do this, but randi doesn't take fixed values like I have stated above.

Accepted Answer

Wan Ji
Wan Ji on 18 Aug 2021
Hi, friend! randi is OK, it can help, look
Y = [ 1 6 1 8 4 5];
R = 7; C = 8;
indices = randi([1,numel(Y)], R, C);
A = Y(indices)
The result is
A =
8 1 5 4 4 4 1 1
1 1 8 1 1 5 6 1
5 1 1 1 6 1 1 1
8 1 8 5 1 1 4 5
5 1 8 8 1 1 8 8
5 8 1 8 8 6 6 1
1 1 5 1 4 4 8 4
Wish you will like it
  1 Comment
Wan Ji
Wan Ji on 18 Aug 2021
Here, because 1 appears in Y array twice, its appearance possibility in matrix A is twice as much as other numbers( 6,8,4 and 5).

Sign in to comment.

More Answers (1)

Yazan
Yazan on 18 Aug 2021
i1 = 7; i2 = 8;
y = [1 6 1 8 4 5];
randIdx = randi(length(y), 1, i1*i2);
data = reshape(y(randIdx), i1, i2)
data = 7×8
6 4 5 6 5 1 1 4 1 4 1 1 1 1 1 1 1 1 1 1 8 1 6 1 6 4 5 6 1 6 6 8 4 5 8 1 6 4 8 8 1 8 4 8 4 5 8 1 6 6 8 1 4 6 5 1

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2012a

Community Treasure Hunt

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

Start Hunting!