gpt4 book ai didi

matlab - 生成随机点 - 限制总面积中每 block 瓷砖的数量

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:00 29 4
gpt4 key购买 nike

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

到目前为止,我认为我可以为每个图 block 创建一个 if 语句,然后如果随机生成的点落在图 block 内,它就会被添加到一个计数中,然后如果计数超过或不超过对于该图 block 足够大,将生成并检查另一个点。这种计数方法似乎不起作用,而不是每个计数都上升,我只得到第 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

如果计数工作正常,我会有一个最小值和最大值,然后使用 if 语句检查计数是否超过最小值和最大值,如果是,则使用 continue 语句继续或不继续。

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

最佳答案

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 , 无论 x 的值如何.同样对于 1 < y < 2 .

关于matlab - 生成随机点 - 限制总面积中每 block 瓷砖的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840719/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com