/* * @lc app=leetcode id=478 lang=cpp * * [478] Generate Random Point in a Circle * * https://leetcode.com/problems/generate-random-point-in-a-circle/description/ * * algorithms * Medium (37.44%) * Likes: 109 * Dislikes: 183 * Total Accepted: 6.8K * Total Submissions: 18.2K * Testcase Example: '["Solution", "randPoint", "randPoint", "randPoint"]\n[[1.0, 0.0, 0.0], [], [], []]' * * Given the radius and x-y positions of the center of a circle, write a * function randPoint which generates a uniform random point in the circle. * * Note: * * * input and output values are in floating-point. * radius and x-y position of the center of the circle is passed into the class * constructor. * a point on the circumference of the circle is considered to be in the * circle. * randPoint returns a size 2 array containing x-position and y-position of the * random point, in that order. * * * * Example 1: * * * Input: * ["Solution","randPoint","randPoint","randPoint"] * [[1,0,0],[],[],[]] * Output: * [null,[-0.72939,-0.65505],[-0.78502,-0.28626],[-0.83119,-0.19803]] * * * * Example 2: * * * Input: * ["Solution","randPoint","randPoint","randPoint"] * [[10,5,-7.5],[],[],[]] * Output: * [null,[11.52438,-8.33273],[2.46992,-16.21705],[11.13430,-12.42337]] * * * Explanation of Input Syntax: * * The input is two lists: the subroutines called and their arguments. * Solution's constructor has three arguments, the radius, x-position of the * center, and y-position of the center of the circle. randPoint has no * arguments. Arguments are always wrapped with a list, even if there aren't * any. * * */classSolution {public:double r, x_cen, y_cen;Solution(double radius,double x_center,double y_center) { r = radius; x_cen = x_center; y_cen = y_center; }vector<double> randPoint() {while (true) {double x = (2* (double)rand() / RAND_MAX -1.0) * r;double y = (2* (double)rand() / RAND_MAX -1.0) * r;if (x * x + y * y <= r * r) return {x_cen + x, y_cen + y}; } }};/** * 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(); */