Random shuffle of vector elements

137 ビュー (過去 30 日間)
Premysl Stastny
Premysl Stastny 2021 年 10 月 5 日
コメント済み: Fangjun Jiang 2021 年 10 月 5 日
Hello,
How to randomly shuffle all elements of the vector except the first and last position?
For example:
I have vector A=[5 1.5 1.6 1.7 5] and I want to randomly shuffle 2nd, 3rd 4th element while the 1st and the last will stay the same.
Thank you

採用された回答

Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro 2021 年 10 月 5 日
This can be easily done by addressing the vector correctly. First you need a random order to shuffle your elements. You can do that by using rand and then sort:
[a,b]=sort(rand(1,3))
a = 1×3
0.0591 0.2095 0.2737
b = 1×3
3 2 1
so b will be the order. Now you need to use that to re-order your vector, let's call the new vector A2:
A=[5 1.5 1.6 1.7 5];
A2 = [A(1) A(b+1) A(end)]
A2 = 1×5
5.0000 1.7000 1.6000 1.5000 5.0000
Now you have a new vector with the first and last same as they were, but 2:4 have been randomly shuffled.
Hope this solves your question.

その他の回答 (1 件)

Fangjun Jiang
Fangjun Jiang 2021 年 10 月 5 日
p=randperm(3);
index=[1,1+p,5];
b=A(index);
  1 件のコメント
Fangjun Jiang
Fangjun Jiang 2021 年 10 月 5 日
do it in one shot
p=perms(2:4);
index=[ones(6,1), p, 5*ones(6,1)];
b=A(index)

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by