最近看到一个面试题目,觉得很有意思。就自己推导了下,不知道是否正确。

面试题目是:在1到1000的数字中,有一个数值是正确的。你可以任意猜测数值,我会告诉你是大了还是小了,问至少要猜多少次。
答案肯定是至少要猜1次。

现在新问题就是,理论最多要猜多少次,实际最多要猜多少次,平均要猜多少次?

我自己的推导方法和答案等有心人回答好了后,再放出。

这个可以采用简单的“对分法”原理。
设实际数值是a,从1-1000中猜。
1、首先猜a=500,如果大了,证明1<a<500,反之1000>a>500
2、如果a<500,就猜a=250,如果大了,证明1<a<250,如果小了,证明250<a<500
3、按照上面方法,每次都猜范围的一半,每次都将范围缩小一半。
这是数学里的一种常用解题方法(如:一元n次方程的解题方法)。
在这个计算里,你可以这样理解。
第一次猜,去掉500个数据;
第二次猜,去掉250个数据;
第三次猜,去掉125个数据;
第四次猜,去掉62(63)个数据;
第五次猜,去掉31(32)个数据;
第六次猜,去掉15(16)个数据;
第七次猜,去掉7(8)个数据;
第八次猜,去掉3(4)个数据;
第九次猜,去掉1(2)个数据;
第十次就猜到了。追问

正确的算法。虽然数值没办法精确下来,但是已经比较接近了。
这个问题的解决方法我并不是用公式去套用,而是采用写程序的方法去统计计算。
目前程序计算了22550次,最小值1次,最大值33次,平均值为14(小数位误差为0.01)。很有意思,不知道一直算下去,最大值是否可以突破33次,超过50次。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-18
实际用二分法,每猜一次可将范围缩小一半,2^10>1000,因此最多10次可以猜出来。
1次猜出的可能性为1/1000
2次猜出的可能性为(999/1000)(1/500)
3次猜出的可能性为(999/1000)(499/500)(1/250)
4次猜出的可能性为(999/1000)(499/500)(249/250)(1/125)
5次猜出的可能性为(999/1000)(499/500)(249/250)(124/125)(1/62)
6次猜出的可能性为(999/1000)(499/500)(249/250)(124/125)(61/62)(1/31)
7次猜出的可能性为(999/1000)(499/500)(249/250)(124/125)(61/62)(30/31)(1/15)
8次猜出的可能性为(999/1000)(499/500)(249/250)(124/125)(61/62)(30/31)(14/15)(1/7)
9次猜出的可能性为(999/1000)(499/500)(249/250)(124/125)(61/62)(30/31)(14/15)(6/7)(1/3)
10次猜出的可能性为(999/1000)(499/500)(249/250)(124/125)(61/62)(30/31)(14/15)(6/7)(2/3)

平均猜的次数求一下上面的期望值:
[1*(1/1000)+2*(999/1000)(1/500)+...]
=10*0.5+9*0.25+8*0.125+7*0.0625+6*0.03126+5*0.0159+4*0.0079+3*0.00399+2*0.00199+1*0.001
=9.003
平均大概9次可猜出。
第2个回答  2012-09-18
这是数学中的关于求方程近似根的问题,一般采取二分法,理论上是猜10次(2的10次方=1024)
实际上因为没时间考虑这么清楚,肯定要多于10次,平均猜(这个这么算啊)?
第3个回答  2012-09-18
最多猜1000次,假设这个数是1,你猜1000,他说大了,你猜999,他说大了,你猜998,他还说大了,这样猜下去就要猜1000次,实际最多要猜11次,用数学上的二分法算,第一次猜1000,第二次猜500,第三次猜250,第四次猜125,第五次猜63,第六次猜32,第七次猜16,第八次猜8,第九次猜4,第十次猜2,第十一次猜1,最多11次,用数学上的二分法,平均要猜多少次,要看一共有多少种猜法,猜法太多了不好算。
第4个回答  2012-09-18
理论上要猜1000次
实际跟平均是得不出具体的答案的

最近看到一个面试题目,觉得很有意思。就自己推导了下,不知道是否正确...
第九次猜,去掉1(2)个数据;第十次就猜到了。

失败的面试问题
失败的面试问题,往往过于空洞或者俗套,问不出求职者的实际能力。较为科学的面试问题汇总:1. 语言表达、仪表 序号 题目 1 简单的谈一下自己。观察应试者的语言是否流畅、有条理、层次分明,讲话的风度如何。2 请你告诉我你的一次失败经历。 如果能迅速作答,则应试者反应灵敏,或可能是应试者善于总...

认知的四个层次
所谓“不知道自己知道”,就是说,这种人的知识结构,已经超出了自己意识认知的范围。他可能从未接触过某个领域,但是你如果告诉他关于这个领域的一些情况,他就好像在这个领域有过很多经验一样,马上给你推导出可能出现的结果。甚至一些在世界上从未发生过的事情,他都能够预测出来。这种人和第三种人的区...

什么样的人是最聪明的
什么样的人是最聪明的1 想事情想得比较周全,在我们的生活中,会碰到有一种人,把事情想得比较周全的人;这样的人不会只看到眼前的事物,就做出全部的决定,而是就算看到眼前的事物,也还照样考虑着后面的问题;想事情想得比较长远,对于我们生活中的有一部分人,在面对问题,在面对事情的时候,会...

大学生面试常见问题
2 在一次重要的会议上,领导做报告时将一个重要的数字念错了,如不纠正会影响工作。这时你会怎么办? 反馈的时间应作为主要参考因素,若对方在20 秒内还没有回答,自然转入下一个问题 8. 自知力、自控力 序号 题目 面试要点参考 1 你认为自己的长处和短处是什么?怎样才能做到扬长避短? 关注对方...

什么样的人才算聪明
一、聪明人说话习惯用总分总 聪明人看待事物是立体而饱满的,面对一个问题,他们在脑海中会迅速形成一个金字塔模式,先对这件事有个总的概括,然后通过一二三进行解释说明,最后再来一个总结,形成一个完成的论述。 聪明人都擅长掩饰 真正的聪明人从来不表露自己的聪明,而且还经常刻意的隐瞒。很多时候他们做成了事,做出...

面试时需要注意的事项有哪些
(1)不要带礼物去面试。(2)不要轻视主试人。(3)不要用主试人听不懂的方言讲话。4、面试时要全神贯注,不要走神,认真听考官的每一个问题,同时给予考官一定的互动,比如适当地点点头,表示有在听并且已经听懂了。作答时不要耍花枪,不要故弄玄虚,不然考官会觉得你太滑头、不诚实。如果遇到...

作为一个应届生程序员,我是怎么通过阿里的三轮面试的
而算法推导过程并不清楚,只是理解了其思想。我怕被问得太细致,所以不是很情愿。不过,在面试官1的坚持下,最终还是同意了。看到第二个面试官的牌子上写着“数据研发”,我稍微舒了口气;幸好不是“数据挖掘”。今年,“数据研发”岗位招人挺多的,很多都是去小微金服。面试完之后,我觉得“数据...

收到面试通知想知道详情应该怎样回复
1.分析思考问题的深度 即能否透过现象看本质以及看到的本质的层次有多深。分析思考问题有一定的深度,而不能肤浅地停留在表面。仅仅着眼于表象而不去挖掘更深入的内核,所得出的结论很可能是错误的、机械的或者是唯心的,当然更不可能正确推导、印证其他结论。2.分析思考问题的广度 每个问题、每个事物都不...

面试的窍门是什么?面试时,企业最看重的是什么?
面试时,一个好的企业最注重的是什么? 你好! 在日常生活中,我们也会遇到这样的情形:在某些场合,突然感到自己的穿着很别扭,与周围的人们或环境格格不入,于是乎举手投足,不无窘态,只盼著早早散会离去。 在面试的时候,你的心情免不了紧张,对类似的心理障碍更应防患于未然。尽管面试主要考察应考者的内在素质,但...

相似回答
大家正在搜