Я пытаюсь сгенерировать случайно рассеянное, но ограниченное количество единиц в матрице нулей.
Скажем, у меня есть матрица 10x10 нулей (zeros(10)
), и я хочу случайным образом разместить десять единиц, чтобы это выглядело как:
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
Как я могу сделать это БЕЗ цикла for и без ручного подключения каждой позиции (этот пример является гораздо меньшей версией моей настоящей проблемы)?
Пока мой код:
% Generate zeros
M = zeros(10)
% Generate random indices
Rands = [randsample(10, 10) randsample(10, 10)]
Где первый столбец предназначен для индексов строк, а второй столбец - индексов столбцов.
Теперь я, очевидно, не могу просто поместить эти индексы в индексы строк и столбцов M
следующим образом:
M(Rands(:,1), Rands(:,2)) = 1
Как я могу оценить изменения этих случайных индексов?