Используемый автором метод Монте-Карло (MC) не имеет ничего общего с результирующим типом файла изображения, он имеет непосредственное отношение к тому, как изображение было сгенерировано в первую очередь. Поскольку целью JS1K является написание компактного кода, автор определяет розу с помощью математических форм, которые должны быть заполнены крошечными точками (чтобы они выглядели как сплошное изображение) с помощью базового рендера.
Как вы заполняете эти формы? Одним из методов является выборка поверхности равномерно , то есть за заданный интервал, поместите точку. Как цитирует @Jordan, он будет работать тогда и только тогда, когда интервал установлен правильно. Сделайте это маленьким, это займет много времени; сделайте это большим, изображение лоскутное. Однако вы можете обойти всю проблему путем выборки по поверхности случайным образом . Вот где приходит метод MC.
Я видел эту путаницу с MC раньше, так как ее часто считают инструментом для численного моделирования. Несмотря на широкое использование как таковое, основная идея состоит в том, чтобы случайным образом выбирать интервал со смещением, которое соответственно взвешивает каждый шаг (в зависимости от проблемы). Например, физическое моделирование может иметь вес e ^ (- E / kT), тогда как числовой интегратор может использовать вес, пропорциональный производной в точке выборки. Запись wikipeida (и ссылки в ней) является хорошей отправной точкой для более подробной информации.
Вы можете думать о полной розе как о функции, которая полностью вычислена. При выполнении алгоритма MC он выполняет выборку этой функции, а затем сходится к правильному ответу.