在圓內生成隨機點(均勻)我需要在半徑為R的圓內生成一個均勻的隨機點。我意識到,通過在區間[0 ...2π)中選擇一個均勻的隨機角度,并且在區間(0 ... R)中均勻隨機半徑,我將最終得到更多的點朝向中心,因為兩個給定半徑,較小半徑中的點將比較大半徑中的點更接近彼此。我在這里發現了一篇關于此的博客文章,但我不理解他的推理。我想它是正確的,但我真的想從他得到的地方(2 / R 2)× r以及他如何得出最終解決方案中理解。更新:發布此問題7年后,我仍然沒有收到有關平方根算法背后數學的實際問題的滿意答案。所以我花了一天時間自己寫答案。鏈接到我的答案。
3 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
這是一個快速而簡單的解決方案。
選擇范圍(0,1)中的兩個隨機數,即a
和b
。如果b < a
,交換它們。你的意思是(b*R*cos(2*pi*a/b), b*R*sin(2*pi*a/b))
。
您可以按如下方式考慮此解決方案。如果你拿圓圈,剪掉它,然后將它拉直,你會得到一個直角三角形。規模是倒三角形,而且你從有一個三角形(0, 0)
,以(1, 0)
對(1, 1)
,然后再返回來(0, 0)
。所有這些變換均勻地改變了密度。你所做的是在三角形中統一選取一個隨機點并反轉過程以獲得圓圈中的一個點。
添加回答
舉報
0/150
提交
取消