Обычно этот сайт работает так, что вы показываете, что вы сделали, вы говорите, что не работает, и мы go оттуда.
Видя ваш вопрос, есть две возможности: либо вы хотите, чтобы мы написать свой код (что я не буду делать) или у вас нет ни малейшего понятия о том, как начать.
Я буду go для второго подхода, и дать вам отправную точку на как ваш вопрос может быть обработан:
Сначала вы создаете список, содержащий все числа от 1 до 10, и отслеживаете количество элементов в этом списке (назовите его lSize
). Затем вы генерируете случайное число от 0 до lSize
(что можно сделать, используя random()*lSize
, округленное в меньшую сторону). Это дает вам индекс числа, которое вы можете взять. Вы берете число, присутствующее в этом индексе, в списке и удаляете его из списка.
Позвольте мне показать вам, как это работает, в примере:
list : (1,2,3,4,5,6,7,8,9,10)
lSize : 10
final_list : <empty>
Сначала итерация: представьте, что random()*lSize
, округленное в меньшую сторону, равно 3.
list[3] = 4 (generally we start counting at 0)
So you add 4 to your final list (currently this is `final_list=(4)`)
You then remove that index from the list, and you get following values:
list : (1,2,3,5,6,7,8,9,10)
lSize : 9
final_list : (4)
Вторая итерация: представьте, что random()*lSize
, округленное в меньшую сторону, равно 8.
list[8] = 10
Remove it and add it to the final_list:
list : (1,2,3,5,6,7,8,9)
lSize : 8
final_list : (4,10)
Вы продолжаете с там до тех пор, пока ваш список не станет пустым или lSize
не равен нулю.
Осторожно: list
предпочтительно является связанным списком, а не массивом, так как удаление элемента где-то посередине должно вызвать другой элементы должны быть сдвинуты. В массиве это сложно; в связанном списке это тривиально.
Удачи