How to assign a given value to an element of an array without repeating it.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 27 Mai 2021
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 Kommentare
Walter Roberson
am 27 Mai 2021
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!