Цель состоит в том, чтобы генерировать шесть номеров лото, но, очевидно, они должны быть уникальными. Это должно быть записано в виде функции, хотя, следующее эквивалент с использованием библиотеки:MATLAB randsample в форме функции
(randsample(42,6))'
Моя идея состояла в том, чтобы создать вектор со всеми возможностями, выбрать один на один раз с помощью индекса и сделать его невозможно выбрать это снова, схватив его перед тем, как будет выбран следующий.
function numbers = lottonumbers()
pool = 1:42;
numbers = zeros(1,6);
for i=1:6
for j=42-i
randIndex = round(1+j*rand);
randNumber = pool(randIndex);
numbers(i) = randNumber;
if randIndex==1
pool = pool(2:end);
else if randIndex==length(pool)
pool = pool(1:(end-1));
else
pool = [pool(1:randIndex-1), pool(randIndex+1:end)];
end
end
end
end
Поскольку я довольно нуб в MATLAB (просто нуб в программировании на самом деле), и так как я решил это сам, задавая вопрос, я просто хочу, чтобы оставить его здесь и спросить вас, ребята, для предложений (лучше стиль, другой алгоритм ...)