题目如下:
题目
我们可以获取的信息为:圆心坐标(x,y),半径。 所以,我们可以取得随机点的坐标范围:
x : [x-r, x+r]
y : [y-r, y+r]
从图形上表示,我们可以获取一个正方形的范围,如下图所示:
正方形范围
因此通过random.uniform我们可以生成正方形内(包括边上)的随机点。但题目要求的是生成圆内的随机点, 于是生成随机点后可以通过点到圆心的距离来判断随机点是否在圆内,如果不在圆内,就抛弃该结果,重新生成。
参考代码如下:
import random
class Solution:
def __init__(self, radius: 'float', x_center: 'float', y_center: 'float'):
self.radius = radius
self.x_center = x_center
self.y_center = y_center
self.x_max = x_center + radius
self.y_max = y_center + radius
self.x_min = x_center - radius
self.y_min = y_center - radius
def randPoint(self) -> 'List[float]':
while True:
res_x = random.uniform(self.x_min, self.x_max)
res_y = random.uniform(self.y_min, self.y_max)
dis = (res_x - s