you are not using rand correctly. from the documentation:
"X = rand returns a single uniformly distributed random number in the interval (0,1).
X = rand(sz1,...,szN) returns an sz1-by-...-by-szN array of random numbers where sz1,...,szN indicate the size of each dimension. For example, rand(3,4) returns a 3-by-4 matrix."
my guess is you were just trying to do:
xp = xl+(xu-xl).*rand; %without the (0,1) argument
