Generate Random Point in a Circle — LeetCode 478 Python Solution
- Problem
- #478
- Pattern
- Math and Number Theory
- Reading time
- 2 min
- Source
- leetcode.com
The problem
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).
Example
- Input
- ["Solution", "randPoint", "randPoint", "randPoint"]
- 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);
Python solution
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, self.radius**2))
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]Complexity
| Measure | Complexity |
|---|---|
| Time | O(n) or O(1) |
| Space | O(1) auxiliary |
Pattern: Math and Number Theory
Find the closed form, the invariant, or the modular identity — and skip the loop entirely. LeetCode 478. Generate Random Point in a Circle is filed here on both counts: the reference solution below belongs to the algorithm family this hub collects, and LeetCode tags it Math and Geometry.
The math and number theory guide has the Python template for the pattern and the 485 LeetCode problems that use it.
Related problems
Frequently asked questions
- How hard is LeetCode 478. Generate Random Point in a Circle?
- LeetCode 478. Generate Random Point in a Circle is rated Medium on LeetCode.
- What topics does LeetCode 478. Generate Random Point in a Circle cover?
- LeetCode 478. Generate Random Point in a Circle is tagged Geometry, Math, Rejection Sampling and Randomized on LeetCode.