Генерировать случайный вектор внутри прямоугольника, а не круга? - PullRequest
1 голос
/ 10 августа 2010

У меня есть прямоугольник и круг внутри этого прямоугольника (который расположен вокруг центра прямоугольника). Я хочу создать случайный 2-компонентный вектор, который попадает внутрь прямоугольника, но не в круг. Как я могу это сделать?

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

Ответы [ 2 ]

1 голос
/ 10 августа 2010
Vector = Rectangle.RandomVector();

while (Circle.Contains(Vector)) {
    Vector = Rectangle.RandomVector();
}

Ака, просто перебор.С вероятностью 21,5% каждый раз находиться вне круга:)

0 голосов
/ 10 августа 2010

Генерирует случайные числа для компонента x и y вектора, так что x

Обновление : другой способ, который генерирует неравномерное распределение, но невыбросить любой вектор можно следующим образом: случайным образом выберите угол в интервале от 0 до 2 * пи.Теперь определите длину вектора путем случайного выбора значения из интервала, определенного пересечениями линии с прежним углом, начинающимся в центре с круга и прямоугольника.Результирующее распределение будет равномерным при защите на круге.Это также будет равномерным для каждого угла.Однако на плоскости он не будет равномерным.

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