Я ищу алгоритм, в котором я могу установить псевдослучайные позиции в пределах данного окна просмотра (сверху, слева, ширине) без сохранения этих позиций. Скажем, у меня есть окно просмотра (от 0, 0) до (100, 100). Затем я найду элементы в (67, 25), (36, 42) и (1, 2). Если бы я изменил этот видовой экран с (-50, -50) до (50, 50), я бы все же нашел (36, 42) и (1,2), но тогда я также мог бы найти его на (-14 , 7) и (-32, -20). Я не знаю, как я могу сделать это яснее.Алгоритм позиционирования случайных элементов на бесконечной плоскости
ответ
Пример работы с целыми числами. Он также может быть изменен на float.
import random
STEP = 10 # size of square with random points
COUNT = 6 # number of random points in the square
def get_points(x1, y1, x2, y2):
points = []
sx = (x1 // STEP) * STEP
sy = (y1 // STEP) * STEP
for bx in range(sx, x2, STEP):
for by in range(sy, y2, STEP):
random.seed(bx + by)
for i in range(COUNT):
px = bx + random.randrange(STEP)
py = by + random.randrange(STEP)
if x1 <= px < x2 and y1 <= py < y2:
points.append((px, py))
return points
print get_points(0, 0, 10, 10)
print get_points(0, 0, 100, 100)
Весь самолет покрыт квадратами, содержащими случайные точки в зависимости от площади.
Вы найдете расположение нижнего левого квадрата (sx
, sy
), то вычислить расположение всех квадратов, которые необходимы для выбранного окна (bx
, by
). Вы инициализируете генератор случайных чисел, а затем генерируете все необходимые точки в квадрате (px
, py
). Но на самом деле рассматриваются только те точки, которые находятся внутри окна.
Просто для вдохновения.
Ницца. Чтобы получить хорошо распределенные результаты, я думаю, вы хотите сгенерировать «COUNT», используемый для каждого квадрата из распределения Пуассона с соответствующим средним значением. (Хотя биномальный был бы более уместным в дискретном случае.) –
Это круто, и его можно расширить в более высокие размеры, которые я также искал (не часть этого вопроса). Я думаю, это может сработать. – Jordan
@ Джордан подтвержу. Вы можете использовать тот же подход и для точек в пространствах с большим количеством измерений. – dlask
- 1. Алгоритм позиционирования прямоугольных и случайных объектов внутри непрямоугольного холста
- 2. Алгоритм декартовой плоскости спирали?
- 3. Позиционирование случайных точек на 2D-плоскости
- 4. Быстрый алгоритм вращения плоскости?
- 5. алгоритм позиционирования окна
- 6. Объект позиционирования Алгоритм
- 7. позиционирования элементов на странице CSS
- 8. позиционирования элементов на веб-странице
- 9. Алгоритм визуализации диаграммы на двумерной плоскости?
- 10. позиционирования элементов внутри DIV
- 11. Алгоритм перебора случайных перестановок
- 12. Алгоритм случайных чисел
- 13. Алгоритм случайных чисел
- 14. Уникальный алгоритм случайных чисел
- 15. Нахождение очень близких точек на плоскости - необходим приблизительный алгоритм кластеризации
- 16. C# - Двоичный алгоритм поиска случайных сгенерированных элементов массива не работает
- 17. Алгоритм для поиска пересечений в полярной плоскости
- 18. Лучший способ позиционирования элементов заголовка?
- 19. Алгоритм позиционирования кораблей в игре Battleship
- 20. Алгоритм генерации случайного порядка элементов
- 21. Алгоритм поиска ли 2 объекта на 2D плоскости будут сталкиваться
- 22. Алгоритм определения случайных имен файлов?
- 23. Алгоритм генерации случайных экземпляров UML
- 24. Удаление случайных элементов,
- 25. Перемешать список случайных элементов
- 26. Алгоритм генерации случайных чисел из дискретного распределения?
- 27. Разгрузка элементов DOM в бесконечной прокрутке
- 28. Выберите 5 случайных элементов
- 29. Слияние случайных элементов массива/разбиение на куски
- 30. Разделите число на случайное число случайных элементов?
Является ли размер окна фиксированным? Является ли местоположение окна квантованным? – dlask
Ничего не может быть. Я не уверен, что вы подразумеваете под квантованием. Учитывая, что это значит в физике, я не думаю. Я хочу иметь возможность создать систему, в которой есть бесконечное количество элементов, «случайно» распределенных на бесконечной плоскости, где я могу найти и отобразить только те, которые существуют в моем конкретном окне. – Jordan
Просто предупреждение: вы не можете покрыть бесконечную плоскость *, используя вычисления с конечным числом бит. Другими словами, эта задача требует, чтобы наименее значимые биты все еще были доступны, даже если вы далеко продвинулись в своем окне, например. 10^1000. – dlask