给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。
说明:
输入值和输出值都将是浮点数。 圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。 圆周上的点也认为是在圆中。 randPoint
返回一个包含随机点的x坐标和y坐标的大小为2的数组。 示例 1:输入: [“Solution”,“randPoint”,“randPoint”,“randPoint”]
[[1,0,0],[],[],[]] 输出:
[null,[-0.72939,-0.65505],[-0.78502,-0.28626],[-0.83119,-0.19803]] 示例
2:输入: [“Solution”,“randPoint”,“randPoint”,“randPoint”]
[[10,5,-7.5],[],[],[]] 输出:
[null,[11.52438,-8.33273],[2.46992,-16.21705],[11.13430,-12.42337]]
输入语法说明:输入是两个列表:调用成员函数名和调用的参数。Solution 的构造函数有三个参数,圆的半径、圆心的 x 坐标、圆心的 y
坐标。randPoint 没有参数。输入参数是一个列表,即使参数为空,也会输入一个 [] 空列表。
static double minY;
static double x_center;
static double minX;
static double y_center;
static double d;
static double radius;
public Solution(double radius, double x_center, double y_center) {
//圆形最左边的x值
minX = x_center - radius;
this.x_center = x_center;
//圆形最下边的x值
minY = y_center - radius;
this.y_center = y_center;
d = 2 * radius;
this.radius = radius;
}
public double[] randPoint() {
while(true){
//随机生成minX+[0,1)*直径之间的x坐标
double x = minX + Math.random() * d;
//随机生成minY+[0,1)*直径之间的y坐标
double y = minY + Math.random() * d;
//x、y坐标和圆心的距离
double diffx = x - x_center;
double diffy = y - y_center;
//如果该xy坐标到原点的直线距离小于等于半径则符合条件
if (Math.sqrt(diffx*diffx +diffy*diffy) <=radius) {
return new double[]{x,y};
}
}
}
本文介绍了一种在给定圆内生成均匀随机点的方法。通过使用圆的半径和圆心坐标,我们创建了一个可以重复生成随机点的函数,确保这些点均匀分布在圆内,包括圆周上的点。示例展示了如何使用此函数生成随机点。
1641

被折叠的 条评论
为什么被折叠?



