- randperm: This function generates a random permutation of integers from 1 to totalElements, ensuring that the selected indices for obstacles are unique.
choose random places on matrix
6 次查看(过去 30 天)
显示 更早的评论
i need to create a game of maze on matlab. i have zero matrix mXm and i need to insert to the matrix n places which will mark as obsticals, how can i choose n random places on matrix and replace the zeros to 1? (randomly)
0 个评论
回答(2 个)
arushi
2024-8-30
Hi Omer,
Here is an example :
function maze = createMaze(m, n)
% Check if the number of obstacles is less than or equal to total matrix elements
if n > m * m
error('Number of obstacles cannot exceed the total number of matrix elements.');
end
% Initialize the m x m matrix with zeros
maze = zeros(m, m);
% Generate n unique random indices for obstacles
totalElements = m * m;
randomIndices = randperm(totalElements, n);
% Convert linear indices to row and column subscripts
[rowIndices, colIndices] = ind2sub([m, m], randomIndices);
% Place obstacles in the matrix
for i = 1:n
maze(rowIndices(i), colIndices(i)) = 1;
end
end
Hope this helps.
0 个评论
Image Analyst
2024-8-30
编辑:Image Analyst
2024-8-30
Simply use randperm and linear indexing. No need to figure out or convert locations to (row, column) indexes (that's a waste of time).
m = 7; % Width and height of maze
maze = false(m, m); % Initialize maze to all zeros. Use logical type to save memory space.
numOnes = round(0.3 * m * m); % 30% of locations will be 1's.
randomLocations = randperm(m * m, numOnes); % Get all locations in a random order.
maze(randomLocations) = 1 % Assign a 1 to those locations.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Labyrinth problems 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!