Я использую matlab для написания этого кода, и кажется, что с логикой что-то не так, но я не знаю, в чем я не прав и как это улучшить.
Я хочу написать код лото, и в нем шесть цифр, диапазон первых шести цифр от 1 до 38, диапазон последних цифр от 1 до 8. Вот мой код
previous_number=randi([1,38],1,6)
last=randi([1,8],1,1) %produce the last number
for k =1:6
while last== previous_number %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]
но я обнаружил, что последнее число будет генерировать то же число, что и первые шесть чисел, например,
"1" 2 33 55 66 10 "1"
1 "2" 33 55 66 10 "2"
Почему? Я уже сказал
while last==previous_number(k)
last=randi([1,8],1,1)
end
Если я хочу написать код на языке c или другом программном языке, я думаю, что могу просто использовать if, while и loop, и т. Д., Как этот базовый цикл, я не могу использовать "ismemeber" или randperm. как я могу переписать код?
если переписать как
previous_number=randi([1,38],1,6)
last=randi([1,8],1,1) %produce the last number
for k =1:6
if last== previous_number(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]
результат также покажет мне "1" 2 21 12 13 22 "1" иногда