478. Generate Random Point in a Circle LeetCode Solution
In this guide, you will get 478. Generate Random Point in a Circle LeetCode Solution with the best time and space complexity. The solution to Generate Random Point in a Circle problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Generate Random Point in a Circle solution in C++
- Generate Random Point in a Circle solution in Java
- Generate Random Point in a Circle solution in Python
- Additional Resources

Problem Statement of Generate Random Point in a Circle
Given the radius and the position of the center of a circle, implement the function randPoint which generates a uniform random point inside the circle.
Implement the Solution class:
Solution(double radius, double x_center, double y_center) initializes the object with the radius of the circle radius and the position of the center (x_center, y_center).
randPoint() returns a random point inside the circle. A point on the circumference of the circle is considered to be in the circle. The answer is returned as an array [x, y].
Example 1:
Input
[“Solution”, “randPoint”, “randPoint”, “randPoint”]
[[1.0, 0.0, 0.0], [], [], []]
Output
[null, [-0.02493, -0.38077], [0.82314, 0.38945], [0.36572, 0.17248]]
Explanation
Solution solution = new Solution(1.0, 0.0, 0.0);
solution.randPoint(); // return [-0.02493, -0.38077]
solution.randPoint(); // return [0.82314, 0.38945]
solution.randPoint(); // return [0.36572, 0.17248]
Constraints:
0 < radius <= 108
-107 <= x_center, y_center <= 107
At most 3 * 104 calls will be made to randPoint.
Complexity Analysis
- Time Complexity:
- Space Complexity:
478. Generate Random Point in a Circle LeetCode Solution in C++
class Solution {
public:
Solution(double radius, double x_center, double y_center)
: radius(radius), x_center(x_center), y_center(y_center) {}
vector<double> randPoint() {
const double length = sqrt(distribution(generator)) * radius;
const double degree = distribution(generator) * 2 * M_PI;
const double x = x_center + length * cos(degree);
const double y = y_center + length * sin(degree);
return {x, y};
}
private:
const double radius;
const double x_center;
const double y_center;
default_random_engine generator;
uniform_real_distribution<double> distribution =
uniform_real_distribution<double>(0.0, 1.0);
};
/* code provided by PROGIEZ */
478. Generate Random Point in a Circle LeetCode Solution in Java
class Solution {
public Solution(double radius, double x_center, double y_center) {
this.radius = radius;
this.x_center = x_center;
this.y_center = y_center;
}
public double[] randPoint() {
final double length = Math.sqrt(Math.random()) * radius;
final double degree = Math.random() * 2 * Math.PI;
final double x = x_center + length * Math.cos(degree);
final double y = y_center + length * Math.sin(degree);
return new double[] {x, y};
}
private double radius;
private double x_center;
private double y_center;
}
// code provided by PROGIEZ
478. Generate Random Point in a Circle LeetCode Solution in Python
class Solution:
def __init__(self, radius: float, x_center: float, y_center: float):
self.radius = radius
self.x_center = x_center
self.y_center = y_center
def randPoint(self) -> list[float]:
length = math.sqrt(random.uniform(0, 1)) * self.radius
degree = random.uniform(0, 1) * 2 * math.pi
x = self.x_center + length * math.cos(degree)
y = self.y_center + length * math.sin(degree)
return [x, y]
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.