码迷,mamicode.com
首页 > 其他好文 > 详细

如何在半径为1的圆中随机选取一个点

时间:2014-07-24 22:31:42      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   http   strong   io   for   re   c   cti   

拿到这个题目大部分人的第一个思路是

  在x轴[-1,1],y轴[-1,1]的正方形内随机选取一点。然后判断此点是否在圆内(通过计算此点到圆心的距离)。如果在圆内,则此点即为所求;如果不在,则重新选取直到找到为止。 正方形的面积为4,圆的面积为pi,所以正方形内的随机点在圆内的概率是pi/4。

  如果对机器学习的算法熟悉的话,这种方法叫做拒绝性采样就是用一种容易生成的概率分布(本题是正方形的均匀分布),去模拟不容易生成的概率。

bubuko.com,布布扣

在单位圆上模拟均匀分布,要模拟满足概率分布 f 的随机变量,其中 f 满足 bubuko.com,布布扣.    bubuko.com,布布扣

我们把 g 选择为均匀分布在一个中心在原点,边长为 2 的正方形上。 

  注意落在圆内的概率是pi/4,(圆的面积是pi,正方形的面积是4),不落在圆的概率是1-pi/4,对于k次试验不落在圆内的概率是(1-pi/4)^k,当k=20时,结果近似于.00000000000004,当k=50时近似10^{-34},这个要花一定的时间。

另一种方法是

  从[0,2*pi)中随机选一个角度,对应于圆中的一条半径,然后在此半径上选一个点。但半径上的点不能均匀选取,选取的概率应该和距圆心的长度成正比,这样才能保证随机点在圆内是均匀分布的。

http://stackoverflow.com/questions/5837572/generate-a-random-point-within-a-circle-uniformly

如何在半径为1的圆中随机选取一个点,布布扣,bubuko.com

如何在半径为1的圆中随机选取一个点

标签:style   http   strong   io   for   re   c   cti   

原文地址:http://www.cnblogs.com/xiongqiangcs/p/3866352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!