解题思路
比较笨的办法 不过很好理解
在圆的外切正方形中随机取点,在这些点中剔除圆外的部分就可以得到园内的随机点啦
有个小问题就是取不到正方形与圆在右上方的两个切点,不过这两个点取到的概率为零,并不影响整体的随机性所以无伤大雅 😋
代码
class Solution {
double x,y,r;
Random random = new Random();
public Solution(double radius, double x_center, double y_center) {
x = x_center;
y = y_center;
r = radius;
}
public double[] randPoint() {
while(true){
double X = random.nextDouble()*r*2-r;
double Y = random.nextDouble()*r*2-r;
if(X*X+Y*Y <= r*r)
return new double[] {x+X,y+Y};
}
}
}