Medium
Generate Random Point in a Circle — C++
Full explanation · Time O(1) · Space O(1)
// Time: O(1)
// Space: O(1)
class Solution {
public:
Solution(double radius, double x_center, double y_center) :
radius_(radius),
x_center_(x_center),
y_center_(y_center),
gen_((random_device())()),
uni_(0.0, 1.0) {
}
vector<double> randPoint() {
const auto r = radius_ * sqrt(uni_(gen_));
const auto theta = (2 * M_PI) * uni_(gen_);
return {r * cos(theta) + x_center_,
r * sin(theta) + y_center_};
}
private:
double radius_;
double x_center_;
double y_center_;
default_random_engine gen_;
uniform_real_distribution<double> uni_;
};
/**
* Your Solution object will be instantiated and called as such:
* Solution obj = new Solution(radius, x_center, y_center);
* vector<double> param_1 = obj.randPoint();
*/