- 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
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuestas (2)
arushi
el 30 de Ag. de 2024
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 comentarios
Image Analyst
el 30 de Ag. de 2024
Editada: Image Analyst
el 30 de Ag. de 2024
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 comentarios
Ver también
Categorías
Más información sobre Labyrinth problems en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!