摘要: 假设圆心所在位置为坐标元点(0, 0)。方法1.在x轴[-1, 1],y轴[-1, 1]的正方形内随机选取一点。然后判断此点是否在圆内(通过计算此点到圆心的距离)。如果在圆内,则此点即为所求;如果不在,则重新选取直到找到为止。正方形的面积为4,圆的面积为pi,所以正方形内的随机点在圆内的概率是 pi / 4。方法2.从[0, 2*pi)中随机选一个角度,对应于圆中的一条半径,然后在此半径上选一个点。但半径上的点不能均匀选取,选取的概率应该和距圆心的长度成正比,这样才能保证随机点在圆内是均匀分布的。 阅读全文
posted @ 2013-08-09 17:20 一枚程序员 阅读(781) 评论(0) 推荐(0) 编辑
摘要: 问题起源于编程珠玑Column 12中的题目10,其描述如下: How could you select one of n objects at random, where you see the objects sequentially but you do not know the value of n beforehand? For concreteness, how would you read a text file, and select and print one random line, when you don’t know the number of lines in a. 阅读全文
posted @ 2013-08-09 17:04 一枚程序员 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 1. 有一个整数数组,请求出两两之差绝对值最小的值, 记住,只要得出最小值即可,不需要求出是哪两个数。方法1:暴力的方式。遍历所有的两个数的差,记录最小值。算法的复杂度O(n2)方法2:两个数要想差的绝对值最小,肯定是需要两个数大小相近。故有思路:先对数组进行排序,然后遍历一遍,相邻的数相减,记录绝对值最小的数。方法3:将现在的问题进行转化:设这个整数数组是a1,a2,...,an构造数组B=(b1,b2,...,bn-1)b1 = a1-a2,b2 = a2-a3,b3 = a3-a4,...bn-1 = an-1 - an那么原数组中,任意两整数之差ai-aj(10) ... 阅读全文
posted @ 2013-08-09 09:37 一枚程序员 阅读(623) 评论(0) 推荐(0) 编辑