478. Generate Random Point in a Circle

Difficulty:
Related Topics:
Similar Questions:

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:

  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:

Solution

/**
 * @param {number} radius
 * @param {number} x_center
 * @param {number} y_center
 */
var Solution = function(radius, x_center, y_center) {
    this.radius = radius;
    this.centerX = x_center;
    this.centerY = y_center;
};

/**
 * @return {number[]}
 */
Solution.prototype.randPoint = function() {
    var radius = Math.sqrt(Math.random()) * this.radius;
    var rand = Math.random();
    var degree = Math.PI / 2 * (rand === 1 ? 0 : rand);
    var x = Math.cos(degree) * radius;
    var y = Math.sin(degree) * radius;
    return [
        this.centerX + (Math.random() > 0.5 ? 1 : -1) * x,
        this.centerY + (Math.random() > 0.5 ? 1 : -1) * y,
    ];
};

/** 
 * Your Solution object will be instantiated and called as such:
 * var obj = new Solution(radius, x_center, y_center)
 * var param_1 = obj.randPoint()
 */

Explain:

nope.

Complexity: