【问题标题】:Is there any way to limit random in Matlab?有什么方法可以限制 Matlab 中的随机性?
【发布时间】:2011-11-16 08:33:03
【问题描述】:

假设我想使用rand 生成一组坐标(x,y)。取生成随机集的任意一个点,此点那些点(最近/第一层)环绕之间的距离可以限制在一定范围内。总览效果看起来“这些随机点是均匀分布的

【问题讨论】:

    标签: matlab random


    【解决方案1】:

    限制距离为 'r' 的点 (x,y) 的随机坐标更像是选择圆心 (x,y) 和半径为 'r' 的圆中的随机点。

    下面应该有帮助

    http://www.mathworks.com/matlabcentral/answers/294-generate-random-points-inside-a-circle

    【讨论】:

    • 圆内任意一对点之间的最大距离是直径,而不是半径。
    • 实际上点必须在圆上。它是“圆上任何一对点之间的最大距离是直径,而不是半径”。你的帖子到底有什么意义?
    【解决方案2】:

    所有 n 个点必须在一个圆内。这个圆的直径是任意两点之间的最大距离(d_max)。使用极坐标:r = (d_max / 2) * sqrt(rand(n, 1)); phi = 2 * pi * rand(n, 1); 需要平方根才能获得均匀的面密度。以通常的方式将极坐标转换为笛卡尔坐标:x = x0 + r .* cos(phi); y = y0 + r .* sin(phi); 其中(x0, y0) 给出了圆的中心。

    d_max = 10 的结果:

    点间距离的直方图:

    【讨论】:

    • @Ivy,你所说的“那些围绕它”到底是什么意思?
    • @Ivy,我的意思是,哪个点“包围”给定点,哪些点不“包围”?
    • pol2cart 可用于从极坐标到笛卡尔坐标的转换 (mathworks.com/help/techdoc/ref/pol2cart.html)。
    • @Ivy,因为 kol 使用了 rand 函数,所以生成的样本总是会分散,但所有样本都将被限制在以 x0、y0 和 d_max/2 为半径的圆内。他的回答最符合你的要求。
    • @kol:被包围的点,用你的话说,'给定点',是生成的随机点之一。
    【解决方案3】:

    使用模数

    mod([1:5],3)
    ans =
        1     2     0     1     2 
    

    http://www.mathworks.co.uk/help/techdoc/ref/mod.html

    【讨论】:

      猜你喜欢
      • 2013-02-03
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多