Я добавил несколько пробелов в ваш код, чтобы разница стала более очевидной:
x = xmin+rand(1,n)*(xmax-xmin) + ( rand(1,n)-(xmax-xmin) )*1i
^^^ correct ^^^ not correct: missing `xmin+`
(and as OmG noted, also a `-` instead of a `*`)
Один хороший способ уменьшить количество ошибок - избежать дублирования кода. Например, вы можете написать:
rand_sequence = @(m,xmin,xmax) xmin+rand(1,n)*(xmax-xmin);
x = rand_sequence(n,xmin,xmax) + 1i*rand_sequence(n,xmin,xmax)
(похоже, больше кода, но более сложная логика кода не дублируется.)
Или вот так:
x = xmin + (rand(1,n)+1i*rand(1,n)) * (xmax-xmin);