У меня проблема, я хочу создать таблицу из 4 столбцов и 1 строку и целые числа в диапазоне от 0 до 9, без повторения и случайные при каждом запуске.
приходит к этому, но у меня проблема, я всегда генерирую 0 в первом элементе. И я не знаю, как поставить предел 0-9
кто может мне помочь?
Код функции:
function [ n ] = generar( )
n = [-1 -1 -1 -1];
for i = 1:4
r=abs(i);
dig=floor((r-floor(r))*randn);
while find (n == dig)
r=r+1;
dig=dig+floor(r-randn);
end
n(i)=dig;
end
end
И результаты:
generar()
ans =
0 3 9 6
generar()
ans =
0 2 4 8
Я не знаю, является ли этот пост дубликатом, но мне нужна помощь в моей конкретной проблеме.
Итак, предполагая, что вы хотите использовать matlab, потому что код, который вы предоставили, является matlab, вы можете просто сделать это:
randperm(10, 4) - 1
Это даст вам 4 уникальных случайных числа от 0-9
.
generar()
функцию generar()
.
Другой способ получения randsample(n, k)
где n
- целое число, тогда из популяции 1:n
(в качестве вектора столбца) будет взята случайная выборка размера k
. Поэтому для вашего случая вы получите результат:
randsample(10, 4)' - 1
Он рисует 4 случайных числа из населения без замены и всех с одинаковыми весами. Это может быть медленнее, чем randperm(10, 4) - 1
поскольку его реальная сила связана с возможностью пропускать векторы населения для более сложных примеров.
В качестве альтернативы можно вызвать его с помощью randsample(pop, k)
где pop
- это популяционный вектор, из которого вы хотите нарисовать случайный образец размера k
. Итак, для вашего дела, вы бы сделали:
randsample(0:9, 4)
Результат будет иметь тот же размер, что и вектор-популяция, который в этом случае является вектором строки. Просто предложить другое решение и randsample()
вас с randsample()
.