随笔分类 - 概率题
摘要:冒泡排序改一下都能成为一个合理的洗牌算法。。。。#include static int a[56];int main(){ char input; for(int i = 0; i > input) { for(int i = 0; i < 55; ++i) for(int j = 0; j <= i; ++j) { if(a[j] + a[j+1] % 2) { int temp; ...
阅读全文
摘要:当前面试中各大名企经常出现各种各样的概率类面试题。究其原因,我觉得是概率型面试题可以综合考查面试者的思维能力、应变能力、数学能力。在这里对各种类型的概率型题目进行了收集和总结,希望在自我总结的同时对大家有所帮助。1、给你一个数组,设计一个既高效又公平的方法随机打乱这个数组(此题和洗牌算法的思想一致)方法比较简单,基本思想是每次随机取一个数,然后把它交换到最后的位置。然后对前(n-1)个数使用递归的算法。递归实现:void suffle_dfs(int ar[], int n){ if(n1){ swap(ar[n-1], ar[rand()%n]); n--;...
阅读全文
摘要:利用等概率函数Rand5产生等概率函数Rand3问题描述:现在有一个叫做Rand5的函数,可以生成等概率的[0, 5)范围内的随机整数,要求利用此函数写一个Rand3函数(除此之外,不能再使用任何能产生随机数的函数或数据源),生成等概率的[0, 3)范围内的随机整数。//使用Rand5()实现Rand3()int Rand3(){ int x; do { x = Rand5(); } while (x >= 3); return x;}//利用Rand3编写Rand5怎么办?int Rand5(){ int x; do { ...
阅读全文
摘要:假设圆心所在位置为坐标元点(0, 0)。方法1.在x轴[-1, 1],y轴[-1, 1]的正方形内随机选取一点。然后判断此点是否在圆内(通过计算此点到圆心的距离)。如果在圆内,则此点即为所求;如果不在,则重新选取直到找到为止。正方形的面积为4,圆的面积为pi,所以正方形内的随机点在圆内的概率是 pi / 4。方法2.从[0, 2*pi)中随机选一个角度,对应于圆中的一条半径,然后在此半径上选一个点。但半径上的点不能均匀选取,选取的概率应该和距圆心的长度成正比,这样才能保证随机点在圆内是均匀分布的。
阅读全文
摘要:问题起源于编程珠玑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.
阅读全文