Ответ 1
-
получают перетасованные индексы с помощью
randperm
idx = randperm(length(x));
-
использовать индексы для получения перетасованного вектора
xperm = x(idx);
У меня есть martix и вы хотите перетасовать его элемент.
x=[1 2 5 4 6 ]
после перетасовки (что-то вроде этого)
x=[2 4 6 5 1]
есть функция Matlab для нее? в php array_shuffle выполните это.
получают перетасованные индексы с помощью randperm
idx = randperm(length(x));
использовать индексы для получения перетасованного вектора
xperm = x(idx);
В качестве альтернативы randperm
вы также можете использовать randsample
из панели инструментов статистики.
y = randsample(n,k)
возвращает ak
-by-1
vectory
значений, выбранных равномерно случайным образом, без замены, от целых чисел1
доn
.
Обратите внимание, что это "без замены" (по умолчанию). Поэтому, если вы установите k
как length(x)
, это эквивалентно случайному перемещению вектора. Например:
x = 1:5;
randsample(x,length(x))
%ans =
% 4 5 3 1 2
Мне нравится это больше, чем randperm
, потому что он легко расширяется для разных целей. Например, чтобы случайно выделить 3 элемента из x
(например, рисование из ведра с конечными элементами), вы делаете randsample(x,3)
. Аналогично, если вы хотите нарисовать 3 числа, где алфавит состоит из элементов x
, но разрешите повторения, вы делаете randsample(x,3,true)
.