You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中生成椭圆内均匀分布点与矩形内点用于后续计算

R语言生成指定范围均匀分布点的实现方案

需求说明

  • 生成15000个指定椭圆内的均匀分布点,椭圆满足:$\frac{(x-2)2}{32} + \frac{(y-1)2}{22} \leq 1$
  • 生成10000个指定矩形内的均匀分布点,矩形满足:$1 \leq x \leq 4,\ 0 \leq y \leq 3$

实现逻辑

  • 椭圆内点生成:直接对极坐标半径采样会出现中心密度偏高的问题,因此采用单位圆均匀采样+仿射变换的方案:先对单位圆做均匀采样(半径取sqrt(runif(n))修正密度偏差),再按椭圆的半轴长度缩放、按中心坐标平移得到椭圆内均匀分布的点,采样效率100%无浪费
  • 矩形内点生成:直接对x、y两个维度分别用runif()生成对应区间的均匀随机数即可

完整可运行代码

# --------------------------
# 1. 生成椭圆内15000个均匀点
# --------------------------
n_ellipse <- 15000
# 椭圆参数配置
center_x <- 2
center_y <- 1
semi_axis_x <- 3
semi_axis_y <- 2

# 单位圆均匀采样
r <- sqrt(runif(n_ellipse))
theta <- runif(n_ellipse, min = 0, max = 2*pi)

# 仿射变换到目标椭圆
x_ellipse <- center_x + semi_axis_x * r * cos(theta)
y_ellipse <- center_y + semi_axis_y * r * sin(theta)
ellipse_df <- data.frame(x = x_ellipse, y = y_ellipse)

# 验证点有效性(可选)
valid_rate <- mean(((x_ellipse - center_x)^2 / semi_axis_x^2 + (y_ellipse - center_y)^2 / semi_axis_y^2) <= 1)
cat("椭圆有效点占比:", valid_rate * 100, "%\n")

# --------------------------
# 2. 生成矩形内10000个均匀点
# --------------------------
n_rect <- 10000
# 矩形区间配置
x_min <- 1
x_max <- 4
y_min <- 0
y_max <- 3

x_rect <- runif(n_rect, min = x_min, max = x_max)
y_rect <- runif(n_rect, min = y_min, max = y_max)
rect_df <- data.frame(x = x_rect, y = y_rect)

输出说明

最终生成的ellipse_df和rect_df两个数据框分别存储椭圆、矩形内的点坐标,可直接用于后续计算。

内容的提问来源于stack exchange,提问作者Vorrven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:54:02