## Algorithm

Problem Name: 478. 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`.

## Code Examples

### #1 Code Example with Javascript Programming

```Code - Javascript Programming```

``````
const Solution = function(radius, x_center, y_center) {
this.x_center = x_center
this.y_center = y_center
}

Solution.prototype.randPoint = function() {
let len = Math.sqrt(Math.random()) * this.radius
let deg = Math.random() * 2 * Math.PI
let x = this.x_center + len * Math.cos(deg)
let y = this.y_center + len * Math.sin(deg)
return [x, y]
}
``````
Copy The Code &

Input

cmd
["Solution", "randPoint", "randPoint", "randPoint"] [[1.0, 0.0, 0.0], [], [], []]

Output

cmd
[null, [-0.02493, -0.38077], [0.82314, 0.38945], [0.36572, 0.17248]]

### #2 Code Example with Python Programming

```Code - Python Programming```

``````
class Solution:

self.x, self.y, self.r = x_center, y_center, radius

def randPoint(self):
r, angle, scale = random.uniform(0, self.r), random.uniform(0, 2 * math.pi), math.sqrt(random.uniform(0, 1))
return [self.x + self.r * scale * math.cos(angle), self.y + self.r * scale * math.sin(angle)]
``````
Copy The Code &

Input

cmd
["Solution", "randPoint", "randPoint", "randPoint"] [[1.0, 0.0, 0.0], [], [], []]

Output

cmd
[null, [-0.02493, -0.38077], [0.82314, 0.38945], [0.36572, 0.17248]]