У меня есть 2D-список, мне нужно выбрать n
различных случайных точек (x, y координат) из этого 2D-списка. Позвольте мне сначала написать то, что произошло со мной, когда я попытался решить проблему.Как выбрать отдельные случайные точки в сетке
Скажем, сетка 300 x 400
.
- ли декартово произведение
300 x 400
получить список120000
элементов, чем использоватьrandom.choice
(Slow для больших сетей) - Держите выбранные точки в наборе, рандомизации снова в цикле в то время как, если дубликат точка производится. (очень медленно и непредсказуемо, если п велико)
Я искал некоторые подобные вопросы SO, ни один из них не решить проблему непосредственно. Я нашел This question, хотя пользователи отвечают на проблему, они не предлагают решение Python, которое мы можем здесь сделать в этом вопросе. Возможно, использование соответствующих структур данных в стандартной библиотеке Python может быть предложено, если не сам код.
Это, кажется, работает, не могли бы вы объяснить, как это работает и как это позволяет избежать дубликатов? – Rockybilly
Образцы @Rockybilly 'random.sample' без замены. Я связал документы. –
Раньше я использовал 'random.sample', просто трюк с делящим меня смущенным, деление случайного числа на' h' фактически дает различие? – Rockybilly