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!