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

如何在MATLAB中生成指定边界定义域D内的随机浮点数数组

MATLAB 生成定义域D内随机点实现方案

实现思路

  • 采用拒绝采样法实现,先确定D的外接矩形采样范围,再筛选符合区域规则的点即可,实现逻辑简单、准确率高。
  • 本题中的定义域D本质是极坐标方程 r = 0.6 + 0.1*cos(3t)(t∈[0,π])与x轴(y=0)围成的上半闭合区域,点是否在区域内的判断规则非常容易落地。

完整实现代码

% 配置需要生成的有效随机点数量
n_points = 1000;
% 初始化存储结果的数组
result = zeros(n_points, 2);
valid_count = 0;

while valid_count < n_points
    % 在外接矩形[-0.7, 0.7] × [0, 0.7]范围内生成随机点,边界极径最大值为0.7,保证覆盖全区域
    x = -0.7 + 1.4 * rand();
    y = 0.7 * rand();
    
    % 计算当前点的极角、极径
    t = atan2(y, x);
    r = sqrt(x^2 + y^2);
    % 计算当前角度对应的边界极径
    r_bound = 0.6 + 0.1 * cos(3 * t);
    
    % 满足极径小于等于边界极径即为区域内有效点
    if r <= r_bound
        valid_count = valid_count + 1;
        result(valid_count, :) = [x, y];
    end
end

% 可选:可视化验证生成效果,不需要可直接删除
t_bound = linspace(0, pi, 1000);
r_bound = 0.6 + 0.1 * cos(3 * t_bound);
x_bound = r_bound .* cos(t_bound);
y_bound = r_bound .* sin(t_bound);
plot(x_bound, y_bound, 'r', 'LineWidth', 1.5)
hold on
plot([min(x_bound), max(x_bound)], [0, 0], 'r', 'LineWidth', 1.5)
scatter(result(:, 1), result(:, 2), 10, 'b', 'filled')
axis equal
xlabel('x')
ylabel('y')
legend('D区域边界', '内部随机点')

代码说明

  • 如需调整生成点的数量,直接修改n_points的数值即可,该区域拒绝采样的效率很高,生成万级以上的点也不会有明显卡顿。
  • 最终所有有效点都存储在result数组中,第一列为x坐标、第二列为y坐标,可以直接取出做后续计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:30:06