Алгоритм случайного размещения объектов на решетке - PullRequest
1 голос
/ 19 апреля 2020

Что может быть хорошим способом случайного размещения списка m-by-k объектов в прямоугольной решетке angular при сохранении равномерного распределения и избежании столкновений?

Вот пример:

Список объектов: 11111, 111, 1111, 11

возможная конфигурация на решетке 7x7:

1 0 0 0 0 0 1
1 0 1 1 0 0 1
1 0 0 0 0 0 1
0 1 1 1 1 0 1
0 0 0 0 0 0 1

Что я уже сделал:

Я написал код для генерации случайных конфигураций, а затем проверил наличие коллизий и отклонил / принял конфигурацию. Требуется немного, чтобы бежать, и я ищу лучшие способы сделать это.

1 Ответ

1 голос
/ 19 апреля 2020

Я не уверен насчет равномерности распределения, но это случайность настолько, насколько я могу думать прямо сейчас, и я буду избегать столкновений:

While items in itemBucket:
    item = getNextItem()

    legalPosition = false
    While not legalPosition:
        newPosition = choose random location/position
        legalPosition = isPositionLegal(newPosition)

Таким образом, выбирая элементы по одному в время, а затем устанавливая и проверяя их по одному, вы обязательно получите правильное позиционирование (если только вы не расположите первые элементы так, что это вообще невозможно сделать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...