Допустим, у меня есть пул элементов, которые нужно выбрать случайным образом.
И я использую для этого простой алгоритм взвешенного выбора:
- Вычислить сумму веса элементов;
- Выберите случайное число от 0 до суммы веса;
- Перебирайте элементы и уменьшайте его по весу, выбирайте элемент, когда <0 </li>
А пока что ограничение алгоритм распространения обновляет пул доступных элементов.
- Например, скажем, у нас есть сетка N на N, каждая ячейка может выбрать число.
- Выбор осуществляется посредством взвешенного выбора , используя алгоритм, описанный выше.
- Когда ячейка выбирает свой номер, она также ограничивает доступные номера соседних ячеек, используя некоторые правила.
И вот моя проблема:
- Скажем, ячейки A и B являются соседями.
- Сначала скажем, оба они могут выбирать из пула чисел.
- Но если A или B являются определяется, в другой ячейке будет меньшее число для выбора.
- Таким образом, даже для одного и того же ввода случайного числа взвешенный выбор может дать другой результат (потому что сумма весов и вероятность элемента изменились).
- Таким образом, процесс выбора не зависит от порядка, даже если случайное число не зависит от порядка.
Как мы можем гарантировать, что результаты A и B являются случайными и независимыми, сохраняя при этом возможность распространять ограничения? (Возможно ли это в моем случае?)
Обновление:
Алгоритм, на котором я основываю свою идею, - WaveFunctionCollapse , из-за Как это работает, мы не можем гарантировать порядок наблюдения, потому что он всегда выбирает ячейку с наименьшей энтропией.
Я считаю, что мое начальное ограничение изменяет результат непредсказуемым образом, потому что доступная энтропия теперь другая , поэтому порядок наблюдения меняется, и результат наблюдения для той же ячейки также изменяется.