MATLAB: Lotto code,the previous number cannot appear again,how do i improve it

MATLAB

i want to write a lotto code,and there are six numbers in it,the range of first six numbers is 1 to 38,the range of last number is 1 to 8.Here is my code
x = rand(1,10);
[a b]=sort(x);
previous_number=b(1:6)
last=randi([1,8],1,1) %produce the last number
for k =1:6
while last== b(k)%while that last number is the same as the value of one of the previous number
last=randi([1,8],1,1)%then produce the last number again,until the different value produce
end
end
ltto=[previous_number last]
but i found that the last number will still generate the same number as the first six numbers,for example,
"1" 2 33 55 66 10 "1"
1 "2" 33 55 66 10 "2"
Why?i have already said
while last== b(k)
last=randi([1,8],1,1)
end
how do i improve it? i don't want to use the "randperm"

Best Answer

x = rand(1,10);
[a b] = sort(x);
previous_number = b(1:6)
set_for_last_number = setdiff(1:8,previous_number);
pos = randi(length(set_for_last_number));
last = set_for_last_number(pos)