题目链接:478. 在圆内随机生成点
这个题有一个点,在随机采样半径时,不能在 $[0, r]$ 的范围内采样,而得在 $[0, r^2]$ 的范围内采样,然后开方。这两种采样方式求得的点的分布不同,题目要求生成点在面积上分布均匀。
import math
from random import uniform
from typing import List
class Solution:
def __init__(self, radius: float, x_center: float, y_center: float):
self.radius = radius
self.center = (x_center, y_center)
def randPoint(self) -> List[float]:
_r, _a = uniform(0, self.radius ** 2) ** 0.5, uniform(0, 2 * math.pi)
_x, _y = _r * math.cos(_a), _r * math.sin(_a)
xc, yc = self.center
return [xc + _x, yc + _y]