java随机生成圆内坐标,LeetCode

您所在的位置:网站首页 java题圆上随机点 java随机生成圆内坐标,LeetCode

java随机生成圆内坐标,LeetCode

2024-06-29 12:06| 来源: 网络整理| 查看: 265

给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。

说明:

输入值和输出值都将是浮点数。

圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。

圆周上的点也认为是在圆中。

randPoint 返回一个包含随机点的x坐标和y坐标的大小为2的数组。

示例

输入: ["Solution","randPoint","randPoint","randPoint"]

[[1,0,0],[],[],[]]

输出: [null,[-0.72939,-0.65505],[-0.78502,-0.28626],[-0.83119,-0.19803]]

解题思路

我们可以获取的信息为:圆心坐标(x,y),半径。 所以,我们可以取得随机点的坐标范围:

x : [x-r, x+r]

y : [y-r, y+r]

从图形上表示,我们可以获取一个正方形的范围,如下图所示

473d3090b9b6

因此通过rand()我们可以生成正方形内(包括边上)的随机点。但题目要求的是生成圆内的随机点, 于是生成随机点后可以通过点到圆心的距离来判断随机点是否在圆内,如果不在圆内,就抛弃该结果,重新生成。

代码

class Solution {

private:

double r,x,y;

public:

Solution(double radius, double x_center, double y_center) {

x = x_center;

y = y_center;

r = radius;

}

vector randPoint() {

while(true){

double x1 = (2*(double)rand()/RAND_MAX - 1.0)*r;

double y1 = (2*(double)rand()/RAND_MAX - 1.0)*r;

if(x1*x1 + y1*y1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3