用python生成随机矩形,如何在矩形外生成随机点?

假设我的窗户尺寸是400宽600高。在

在单侧生成一个随机点相对容易,比如说顶部:random.randint(0, width)

但是,什么是最聪明的方法来让这四个边都工作,这样一个随机点在一个矩形之外生成?在

如果我这么做

^{pr2}$

他们只会出现在角落,这是有道理的。我能想到的唯一方法是在矩形内随机创建一个点,比较哪个轴最接近边界,然后夹紧它。问题是我不知道如何优雅地做到这一点,不做4个检查每一方(这感觉多余)。我觉得有更简单的解决方法吗?在

这是一个几乎可行的解决方案,但它是如此冗长。只是意识到这样在角落里得到的点数更少。在# Create a random point inside the rectangle

pos_x = random.randint(0, width)

pos_y = random.randint(0, height)

# Get a distance for each side

left_border = pos_x

right_border = width-pos_x

top_border = pos_y

bottom_border = height-pos_y

borders = [left_border, right_border, top_border, bottom_border]

index_1 = 0

index_2 = 2

closest_side = 0

# Get closest from left/right borders

if right_border < left_border:

index_1 = 1

# Get closest from top/bottom borders

if bottom_border < top_border:

index_2 = 3

# Get closest border

if borders[index_1] < borders[index_2]:

closest_side = index_1

else:

closest_side = index_2

if closest_side == 0:

obj.pos.x = 0 # Clamp to left wall

elif closest_side == 1:

obj.pos.x = width # Clamp to right wall

elif closest_side == 2:

obj.pos.y = 0 # Clamp to top wall

else:

obj.pos.y = height # Clamp to bottom wall

你可能感兴趣的:(用python生成随机矩形)