Я пытаюсь создать определенное количество случайных равномерных точек внутри прямоугольника (я знаю пару координат для каждого угла).Создать случайные точки внутри прямоугольника (равномерно)?
Пусть наш прямоугольник будет ABCD
Моя идея: Разделите прямоугольник на два треугольника по диагонали AC. Найдите наклон и перехват диагонали. Затем сгенерируйте два случайных числа из интервала [0,1], пусть они будут a, b. Оценка x = a AB и y = b AD (AB, AD, расстояния). Если A не является (0,0), то мы можем добавить к координатам x и y A. Теперь мы имеем точку (x, y). Если он не находится в нижнем треугольнике (ABC), перейдите к следующему шагу. Иначе добавьте точку в наш график, а также добавьте симметричную (x, y) по отношению к диагонали АС, чтобы мы могли заполнить верхний треугольник (ADC).
Я реализовал это, но я очень сомневаюсь, что точки равномерно сгенерированы (судя по сюжету). Как мне изменить свой алгоритм? Я предполагаю, что проблема связана с тем, как я выбираю треугольник и симметричную вещь.
Можете ли вы рассказать о том, что вы подразумеваете под «случайной формой». Это не бесплатные идеи, и я могу представить несколько способов определения «равномерно случайных». Кроме того, переформатирование вашего объяснения проза вашего алгоритма в код psuedo поможет прояснить, что вы делаете немного. – ChrisCM
«Случайная однородность» Я имею в виду, что я должен генерировать случайные числа, которые должны равномерно распределяться в области прямоугольника. –
Какой у вас вопрос с вашим сюжетом, в частности? Я до сих пор не понимаю, как вы определяете однородность ... Униформа, в статистике/вероятности обычно просто относится к вероятности чего-то происходящего, а не к полученному распределению выбранных значений. Например, неравномерное распределение будет иметь более высокую вероятность точек в верхнем левом углу, но вы все равно можете получить результаты, которые выглядят так, как вы, они были бы менее «вероятными», так как нет высокой плотности точек в этом углу. – ChrisCM