478 在圓內隨機生成點

2021-10-11 21:40:38 字數 1357 閱讀 6956

題目描述:

給定圓的半徑和圓心的 x、y 座標,寫乙個在圓中產生均勻隨機點的函式 randpoint 。

說明:

輸入值和輸出值都將是浮點數。

圓的半徑和圓心的 x、y 座標將作為引數傳遞給類的建構函式。

圓周上的點也認為是在圓中。

randpoint 返回乙個包含隨機點的x座標和y座標的大小為2的陣列。

示例 1:

輸入:[「solution」,「randpoint」,「randpoint」,「randpoint」]

[[1,0,0],,,]

輸出: [null,[-0.72939,-0.65505],[-0.78502,-0.28626],[-0.83119,-0.19803]]

示例 2:

輸入:[「solution」,「randpoint」,「randpoint」,「randpoint」]

[[10,5,-7.5],,,]

輸出: [null,[11.52438,-8.33273],[2.46992,-16.21705],[11.13430,-12.42337]]

輸入語法說明:

輸入是兩個列表:呼叫成員函式名和呼叫的引數。solution 的建構函式有三個引數,圓的半徑、圓心的 x 座標、圓心的 y 座標。randpoint 沒有引數。輸入引數是乙個列表,即使引數為空,也會輸入乙個 空列表。

方法1:

(1)構造均勻的區間,對映到給定的半徑範圍內;

(2)為了構造半徑範圍內的隨機數,可以使用((double)rand())/rand_max獲得0到1的範圍,再乘以r,既獲得0到r範圍內的數字;

(3)再保證座標值在圓的範圍內,既xx+yy<=r*r即可;

(4)為了保證正負數都可以取到,可以使用隨機數的奇偶表示正負即可;

(5)最後將座標平移即可獲得最終的座標值;

class

solution

vector<

double

>

randpoint()

//平移後獲得最終的座標值

return;}

};/** * your solution object will be instantiated and called as such:

* solution* obj = new solution(radius, x_center, y_center);

* vectorparam_1 = obj->randpoint();

*/

478 在圓內隨機生成點 C

拒絕取樣 如果生成的點不符合條件就再生成一次,直至生成的點符合條件 rand 返回一隨機數值的範圍在 0 至 rand max 間。double rand rand max就是0 1.0 2 double rand rand max 1.0就是 1.0 1.0 class solution vect...

Leetcode 478 在圓內隨機生成點

給定圓的半徑和圓心的 x y 座標,寫乙個在圓中產生均勻隨機點的函式 randpoint 說明 輸入值和輸出值都將是浮點數。圓的半徑和圓心的 x y 座標將作為引數傳遞給類的建構函式。圓周上的點也認為是在圓中。randpoint 返回乙個包含隨機點的x座標和y座標的大小為2的陣列。示例 1 輸入 s...

leetcode在圓內隨機生成點

1.拒絕取樣 在乙個半徑為r的圓內均勻隨機生成點,可以使用拒絕取樣 rand rand max隨機產生0 1之間的數,設其值為x,則2 x 1隨機產生 1 1之間的數 則 2 x 1 r則隨機產生 r r之間的數 對於y同理 如下 class solution vectorrandpoint you...