生成随机点 - 限制总面积的每个图块的数量

时间:2016-03-07 10:00:03

标签: matlab random

我正在尝试创建一组随机点,但限制总面积的每个说法中的数字,即1/4。想象我的x& y范围从0到2,0到2,我只会在图块中获得一定数量的随机生成点(0

到目前为止,我认为我可以为每个图块创建一个if语句,然后如果随机生成的点落在图块内,它会被添加到计数中,如果计数超过或不是对于该磁贴足够大,将生成并检查另一个点。这种计数方法似乎不起作用,而不是每个计数都在增加,我只得到第4层的计数增加。

n = 8;
used = [];
k = 0;
a1_count = 0;
a2_count = 0;
a3_count = 0;
a4_count = 0;
while k<n
    x = rand*2;
    y = rand*2;


    if 0 < x < 1 && 0 < y < 1
        a1_count = a1_count + 1;
    end
    if 1 < x < 2 && 0 < y < 1
        a2_count = a2_count + 1;
    end
    if 0 < x < 1 && 1 < y < 2
        a3_count = a3_count + 1;
    end
    if 1 < x < 2 && 1 < y < 2
        a4_count = a4_count + 1;
    end

    used(end+1,:) = [x;y];
    k = k+1;
end

如果计数工作正常,我会得到一个分钟&amp; max,然后使用if语句检查计数是否超出min&amp; max,如果是这样,请使用continue语句继续。

有谁能告诉我为什么每个区域的计数都没有增加?如果我运行此代码,我得到a1_count,a2_count,a3_count = 0,而a4_count = 8,即使这些点位于a1,a2和a3边界内。

1 个答案:

答案 0 :(得分:4)

0 < x < 1形式的表达式需要写为0 < x && x < 1

0 < x < 1在语法上有效,因此不会标记任何警告或错误:它与(0 < x) < 1相同。请注意,(0 < x)本身为0或1。

这解释了为什么1 < x < 2 && 1 < y < 2始终评估为1,因此a4_count 始终增加:1 < x < 2(1 < x) < 2,始终为{{1}无论1的值如何。同样适用于x