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

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

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

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

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

我们把 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的圆中随机选取一个点

时间: 2024-10-13 10:14:50

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

谷歌面试题:在半径为1的圆中随机选取一点

方法1.在x轴[-1, 1],y轴[-1, 1]的正方形内随机选取一点.然后判断此点是否在圆内(通过计算此点到圆心的距离).如果在圆内,则此点即为所求:如果不在,则重新选取直到找到为止.正方形的面积为4,圆的面积为pi,所以正方形内的随机点在圆内的概率是 pi / 4. import java.util.HashMap; import java.util.Map; // 谷歌面试题:在半径为1的圆中随机选取一点 public class FindPointInCircle { // 方法1. /

Loadrunner 中随机选取关联对象

我们在Loadrunner的测试过程中时常需要随机选择一个对象,进行下一步的操作,比如一个Table中有100行,测试的时候不能每次都选择同一行进行测试,而是要随机选择不同行,这样才能更好的模拟用户的真实情况 第一步,找出返回Table对象的请求,进行关联,关联的时候使用Ordinal=all找出所有的行 /*Correlation comment - Do not change! Original value='aQoEp51' Name ='all_the_Listcell' Type ='

array_rand() 从数组中随机取出一个或多个单元

array_rand() - 从数组中随机取出一个或多个单元 mixed array_rand ( array $input [, int $num_req = 1 ] ) 从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键. 参数 input: 输入的数组.必需.规定数组. num_req: 指明了你想取出多少个单元.可选.规定返回多少随机键名.如果指定的数目超过了数组里的数量将会产生一个 E_WARNING 级别的错误. 例子 1 从数组返回一个随机键: <?php $a=arr

php array_rand()函数从数组中随机选择一个或多个元素

php使用array_rand()函数从数组中随机选择一个或多个元素的方法. 使用array_rand() 函数从数组中随机选出一个或多个元素,并返回. array_rand(array,number) 参数 描述 array 必需.规定输入的数组参数. www.jbxue.com number 可选.默认是 1.规定返回多少个随机的元素. 例子: <?php $a=array("a"=>"Dog","b"=>"Cat

从数组中随机抽取一个值,(别人问我,我自己想到的一个方法)

今天本来在群里瞎扯淡的,突然看到有人问一个问题,大概意思是:怎么样从一个数组中随机抽取一个元素.当时我想到了PHP中有一个内置函数是打乱数组的顺序的.我就想用这个函数打乱一下,然后就抽取第一个元素. 代码如下: $array = array( 'das'=>array('id'=>1,'name'=>'于杭'), 'dasss'=>array('id'=>2,'name'=>'张三'), 'dass'=>array('id'=>3,'name'=>'李

javascript小实例,编写一个方法,实现从n-m个数中随机选出一个整数

别怪我是一个闷葫芦,没那么多花哨的语言,废话不多说,先说说小实例的要求: 编写一个方法,实现从n-m个数中随机选出一个整数,要求:传递的参数不足两个或者不是有效数字,返回[0-1]之间的随机数,需要解决n和m两个数大小问题,如果m<n,两个参数的值进行交换: 看到这个求随机数的小实例,相信很多人都会写,也写过很多相关的程序代码,所以,重要的知识点没有,旨在给初学者一些启发,大牛可略过! 既然是给初学者看的,那么我们就从最基本的东西一步一步的看,便于理解,先拆分一下要求吧: 1.求一个n-m的随机

在ASP.NET MVC应用程序中随机获取一个字符串

在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs.com/insus/archive/2012/02/16/2354453.html 此篇实现方法多少是参照这个实现C#版本. 在应用程序下,创建一个CharacterUtility.cs: 这个类别中,分别有几个静态方法:一,为随机的小写字母: 二,是随机产生大写字母: 三,是随机产生数字: 四,是产生特殊

《Unity3d-在地图中随机生成一个物体的代码》

//思路:使用.Instantiate方法控制生成 但是在生成前一定要计算好生成的鱼儿的条件控制 public class FishController : MonoBehaviour{ public int maxCount = 10; //鱼池中鱼最大存在的个数 public int count = 0; //当前鱼池中鱼的个数 public GameObject[] fishArray; //设置与鱼的数组随机生成鱼 public float timer = 0; //生成鱼的时间间隔 p

在java中随机生成一个无序且长度不大于10的字符串

package xiangmu; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class TestCollection { /* * 通过定义Collections.sort()方法对String泛型进行List排序 * 创建一个String泛型List,插入一个不超过10的随机字符串 */ /** * @param