热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

面试概率题

1、一根木棒,截成三截,组成三角形的概率是多少?设第一段截x,第二段截y,第三段1-x-y。考虑所有可能的截法。可能的截法中必须保证三条边都是正数且小于原来边长,则有0&l

1、一根木棒,截成三截,组成三角形的概率是多少?

设第一段截 x,第二段截 y,第三段 1 - x - y。

考虑所有可能的截法。可能的截法中必须保证三条边都是正数且小于原来边长,则有 0

画图可知,(x, y) 必须在单位正方形的左下角的半个直角三角形里,面积为 1 / 2。

然后考虑能形成三角形的截法。首先要满足刚才的三个条件:

0

0

0 <1 - x - y <1

 

然后必须符合三角形的边的要求,即两边之和大于第三边:

x + y > 1 - x - y

x + 1 - x - y > y

y + 1 - x - y > x

化简即得:

0

0

1/2

画图可知,此时 (x, y) 必须在边长为 1/2 的三角形的右上角的半个直角三角形里,面积为 1/8。于是最终概率为 (1/8) / (1/2) = 1/4。


2、有一苹果,两个人抛硬币来决定谁吃这个苹果,先抛到正面者吃。问先抛这吃到苹果的概率是多少?

题目一看似乎答案就是 1/2,但其实认真细想并不是这么回事。

给所有的抛硬币操作从 1 开始编号,显然先手者只可能在奇数(1,3,5,7…)次抛硬币得到苹果,而后手只可能在偶数次(2,4,6,8…)抛硬币得到苹果。

设先手者得到苹果的概率为 p,第 1 次抛硬币得到苹果的概率为 p = 1/2,在第 3 次(3,5,7…)以后得到苹果的概率为 p/4(这是因为这种只有在第1次和第2次抛硬币都没有抛到正面,概率为 1/4 = 1/2 * 1/2 的时候才有可能发生,而且此时先手者此刻面临和开始相同的局面);所以可以列出等式 p = 1/2 + p /4,p = 2/3(注意 p 表示先手者得到苹果的概率)。


3、一个三角形, 三个端点上有三只蚂蚁,蚂蚁可以绕任意边走,问蚂蚁不相撞的概率是多少?

乍一看好像和三角形三边长度有关系,事实上是无关的。

首先,每个蚂蚁在方向的选择上有且只有 2 种可能,共有 3 只蚂蚁,所以共有 2 的 3 次方种可能,而不相撞有有 2 种可能,即全为顺时针方向或全为逆时针方向。

不相撞概率 = 不相撞 / 全部 = 2/8 = 1/4。


4、扔筛子游戏

 

问题描述: 商家发明一种扔筛子游戏,顾客扔到多少点就得到多少钱,但扔筛子之前顾客需要付一定数量的钱 x,假设商家和顾客都足够聪明(1)顾客付一次钱可以扔一次的情况下,顾客能接受的最大 x 是多少(2)现在规则改为顾客付一次钱可以扔两次,顾客扔了第一次之后可以选择是否继续扔第二次,如果扔了第二次则以第二次的结果为准,如果没有扔第二次就以第一次的结果为准,这时顾客能接受的最大 x 为多少。

第一问:可以直接算顾客收益的期望为 1/6 (1 + 2 + 3 + 4 + 5 + 6) = 3.5,顾客能接受的最大 x 就是他收益的期望值。

第二问:考虑顾客什么情况下会扔第二次,就是扔第二次得到钱变多的概率相对较大的时候,那么当顾客第一次扔到 1,2,3 的时候他会选择继续扔第二次,则这时候期望变为 1/6 (4 + 5 + 6) + 1/2 (1/6 (1 + 2 + 3 + 4 + 5 + 6)) = 4.25


5、已知一随机发生器,产生 0 的概率是 p,产生 1 的概率是 1-p,现在要你构造一个发生器,使得它产生 0 和 1 的概率均为 1/2(随机数生成)

由题目有: 0 : p 1 : 1 - p

连续产生两个数,其组合以及概率如下:

00 : p2 01 : p(1 - p) 10 : (1 - p) p 11 : (1 - p)(1 - p)

可以发现 01 和 10 组合的概率是相等的,只需要将其分别映射到 0 和 1 即可。

即每次随机产生两个数,如果组合为00或11则丢弃,若为 01 则映射到 1,若为 10 则映射到 0,这样一来产生 0 和 1 的概率均为 1 / 2 。

 


6、已知一随机发生器,产生的数字的分布不清楚,现在要你构造一个发生器,使得它产生 0 和 1 的概率均为 1/2(随机数生成)

使用该随机发生器产生随机数 a,b,有以下 3 种情况:

  1. a
  2. a == b
  3. a > b

其中情况(1)和(3)是对称的,发生的概率相等,只需要将这两种情况分别映射到 0 和 1 即可,其中遇到 a == b 时忽略。


7、已知有个 rand7() 的函数,返回 1 到 7 随机自然数,怎样利用这个 rand7() 构造 rand10(),随机 1 ~ 10

产生随机数的主要原则是每个数出现的概率是相等的,如果可以得到一组等概率出现的数字,那么就可以从中找到映射为 1 到 10 的方法。

rand7() 返回 1 ~ 7 的自然数,构造新的函数 (rand7() - 1) * 7 + rand7(),这个函数会随机产生 1 到 49 的自然数。

原因是 1 到 49 中的每个数只有唯一的第一个 rand7() 的值和第二个 rand7() 的值表示,于是它们出现的概率是相等。

但是这里的数字太多,可以丢弃 41 到 49 的数字,把 1 到 40 的数字分成 10 组,每组映射成 1 到 10 中的一个,于是可以得到随机的结果。

具体方法是,利用 (rand7() - 1) * 7 + rand7() 产生随机数 x,如果大于 40 则继续随机直到小于等于 40 为止,如果小于等于 40,则产生的随机数为 (x - 1) / 4 + 1。

 

参考:https://zhuanlan.zhihu.com/p/46592195


推荐阅读
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • Nagios可视化插件开发指南 —— 配置详解
    本文详细介绍了Nagios监控系统的配置过程,包括数据库的选择与安装、Nagios插件的安装及配置文件的解析。同时,针对常见的配置错误提供了具体的解决方法。 ... [详细]
  • 集群与负载均衡技术解析
    本文探讨了集群(Cluster)的概念,即通过网络连接的一组计算机系统,它们作为一个整体提供服务,实现分布式计算。文章还详细介绍了负载均衡技术,旨在提高网络服务的效率和可靠性。 ... [详细]
  • 深入理解Java反射机制
    本文将详细介绍Java反射的基础知识,包括如何获取Class对象、反射的基本过程、构造器、字段和方法的反射操作,以及内省机制的应用。同时,通过实例代码加深对反射的理解,并探讨其在实际开发中的应用。 ... [详细]
  • 转载自:https:blog.csdn.netu013948858articledetails77800663【python】pip安装报错UnicodeDecode ... [详细]
  • 面对快应用开发时需要获取摘要值的需求,但官方API并未直接提供相应支持。通过探索发现,利用第三方加密库crypto-js可有效解决此问题。本文将详细介绍如何集成并使用该库来实现摘要值的获取。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
  • 解决 fbterm 键盘映射问题
    本文介绍了在首次运行 fbterm 时遇到键盘输入法无法启动的问题,并提供了两种解决方案,包括使用 setuid 和 setcap 方法。 ... [详细]
  • Backup Exec 11d 初学者使用心得与技巧
    随着企业应用程序的不断扩展,数据备份的需求日益增加。本文通过介绍Symantec Backup Exec 11d的实际应用体验,旨在为初学者提供一些实用的操作指南和建议。 ... [详细]
  • 如何更换Anaconda和pip的国内镜像源
    本文详细介绍了如何通过国内多个知名镜像站(如北京外国语大学、中国科学技术大学、阿里巴巴等)更换Anaconda和pip的源,以提高软件包的下载速度和安装效率。 ... [详细]
  • 本文基于《Core Java Volume 2》的内容,深入探讨了网络编程中通过POST方法提交表单数据的技术细节,包括GET与POST方法的区别、POST提交的具体步骤及常见问题处理。 ... [详细]
  • ZOJ 2760 - 最大流问题
    题目链接:How Many Shortest Paths。题目描述:给定一个包含n个节点的有向图,通过一个n*n的矩阵来表示。矩阵中的a[i][j]值为-1表示从节点i到节点j无直接路径;否则,该值表示从i到j的路径长度。输入起点vs和终点vt,计算从vs到vt的所有不共享任何边的最短路径数量。如果起点和终点相同,则输出无穷大。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
author-avatar
87年的第一场雪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有