How to assign a given value to an element of an array without repeating it.
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello, I need to change the value of an element of the array x for a random value but that this is not repeated in the array. With the following code I check that it is not repeated and then I assign it to the y position.
x = [1 3 5 7 9];
y = randi([1 10]);
n = randi([1 length(x)]);
if ~ismember(y, x)
disp(' NO')
x(n) = y;
else
But the problem is in the case that it is repeated, how could I re-generate another number and perform the previous procedure.
Thanks in advance.
댓글 수: 0
채택된 답변
Walter Roberson
2021년 5월 27일
x = [1 3 5 7 9]
y = setdiff(randi([1 10]), x)
n = randi([1 length(x)])
ny = randi([1 length(y)])
x(n) = y(ny)
댓글 수: 3
Walter Roberson
2021년 5월 27일
Correction to the code:
x = [1 3 5 7 9]
y = setdiff(1:10, x)
n = randi([1 length(x)])
ny = randi([1 length(y)])
x(n) = y(ny)
So y selects the elements of 1:10 that are not in x, and then ny selects a random member of that, so y can never be something that is already in x. No loop is needed.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!