思路:在圆的外接正方形范围内取点,若在园外,则重新选取。
但是random.random()的范围是[0,1),所以这里稍微扩大了范围,才能取得边界值,因此可能慢些。
import random
class Solution:
def __init__(self, radius: float, x_center: float, y_center: float):
self.x = x_center
self.y = y_center
self.r = radius
def randPoint(self) -> List[float]:
px = (random.random()-0.49) * 2 * self.r
py = (random.random()-0.49) * 2 * self.r
if pow(px, 2) + pow(py, 2) > pow(self.r, 2):
return self.randPoint()
return [px + self.x, py + self.y]