- 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
조회 수: 9 (최근 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!