У меня есть фиксированные числа: -3, -1, 1, 3. Как я произвольно генерирую матрицу следующим образом?Как генерировать случайные числа из фиксированного набора
1 -1 -3 -1
3 -3 -3 3
3 3 1 -1
3 -3 3 -1
У меня есть фиксированные числа: -3, -1, 1, 3. Как я произвольно генерирую матрицу следующим образом?Как генерировать случайные числа из фиксированного набора
1 -1 -3 -1
3 -3 -3 3
3 3 1 -1
3 -3 3 -1
Вы можете использовать
randperm
Любая перестановкаИспользование randi
для создания случайных значений индекса в свой вектор возможных значений:
x = [-3 -1 1 3]
y = randi(length(x),[5 5]);
y = x(y);
Хотя @nkjt's answer, вероятно, путь к идти, если у вас есть Statistics Toolbox можно упростить немного используя randsample
(с заменой):
result = NaN(3,6); %// define required size
result(:) = randsample([-3 -1 1 3], numel(result), true);
Или, если исходные числа равномерно распределены как в вашем примере, вы можете решить эту проблему в одной строке:
result = 2*randi(4,[3 6])-5; %// "2" and "5" as per your original values
Это даст только один ряд и без повторяющихся элементов. В примере OP есть строки с повторяющимися элементами –