У меня есть алгоритм случайного выбора элемента t
в массиве с повторением. Это более подробно алгоритм Случайный выбор числа в массиве без повторения
Это может объяснить, как folowing:
- Начальное индекс массива ¯u, который хранит индекс чисел от 1 до K (строка 1 до 3)
- Установить начальное гаммы от k и уменьшаться на единицу для каждой итерации. Цель гамма - без повторения (строка 4,9,10)
- Случайное выберите число t от 1 до N (в j = 1, выберите 1 к k, N - нереформированное число), а затем установите число до конца массива.
- Повторите шаг 2 - 3
- Если гамма = 0, сбросьте гамму = k Эта функция вернет t.
Например, у меня есть массив A=[1,2,3,4,5,6,7,8,9], k=9 =size(A), N=12
(от 1 до 9, номер выбирается только один раз). Теперь я хочу использовать этот алгоритм для случайного выбора номера t из массива A. Это мой код. Однако он не похож на линию 6 в алгоритме. Это правильно? Посмотрим, мой код помощь мне
function nonRepeat
k=9;
u=1:k; % initial value of index
N=12
gamma=k;
for j=1:N
index=randi(gamma,1); % use other choosing
t=u(index)
%%swapping
temp=u(t);
u(t)=u(gamma);
u(gamma)=temp;
gamma=gamma-1;
if gamma==0
gamma=k;
end
end
end
Я думаю, что вы можете начать с более аккуратно форматирование кода. Тогда объясните, что вы подразумеваете под этим, это плохо работает. – lightalchemist
Я его чищу. Я запускаю его, но один элемент выбирает 2 раза в диапазоне от 1 до k – user8264
@ user8264, откуда вы знаете, что он выбирает один номер дважды? Я просто даю один номер. – Rashid