How to spread out an arry of matrix randomly

1 vue (au cours des 30 derniers jours)
Hamid Reza Barzegar
Hamid Reza Barzegar le 18 Mai 2016
I have random matrix like this
[2 2 2 2 1 1 1 1 1 -1 -1 -1 -1 -1]
and depend to the result of calculation number of 2 1 -1 will be different but i want to spread these numbers randomly like this e.g. [2 1 2 -1 1 1 2 -1 2 -1 -1 2 ]
how should i do this?

Réponses (2)

Walter Roberson
Walter Roberson le 18 Mai 2016
YourVector(randperm(length(YourVector)))
  2 commentaires
Hamid Reza Barzegar
Hamid Reza Barzegar le 18 Mai 2016
first=100;
Second=50;
Third=50;
Alloc_Sc=[2*ones(1,first),ones(1,Second),-1*ones(1,Third)];
Alloc_Sc2=Alloc_Sc(length(randperm(Alloc_Sc)));
it shows the error:
Error using randperm Size inputs must be scalar.
Stephen23
Stephen23 le 19 Mai 2016
@Hamid Reza Barzegar: Walter Roberson's answer clearly uses randperm(length(...)). You have written length(randperm(...).

Connectez-vous pour commenter.


Roger Stafford
Roger Stafford le 18 Mai 2016
Modifié(e) : Roger Stafford le 18 Mai 2016
Let n be the desired length of the result and let a = [2 1 -1] :
p = randi(3,n,1); % <-- Corrected
v = a(p(randperm(n))); % v is your result % <-- Corrected
  5 commentaires
Roger Stafford
Roger Stafford le 18 Mai 2016
As I state above, your expression is in error in using "length(randperm(Alloc_Sc))" instead of "randperm(length(Alloc_Sc))".
Hamid Reza Barzegar
Hamid Reza Barzegar le 19 Mai 2016
Thanks for your reply i changed as you mentioned but the data is returned is number between 1 to 200 not my data now there is no error but not my data
first=100;
Second=50;
Third=50;
Alloc_Sc=[2*ones(1,first),ones(1,Second),-1*ones(1,Third)];
Alloc_Sc2=randperm(length(Alloc_Sc));

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical 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