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 中查找有关 Creating and Concatenating Matrices 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

