智力题2
来源:互联网 发布:禄宏微交易 知乎 编辑:程序博客网 时间:2024/05/21 18:39
假定函数rand_k会随机返回一个[1,k]之间的整数(k>=2),并且每个整数值出现的几率相等。已知目前有rand_7的实现,请问通过调用rand_7和四则运算函数,并适当增加逻辑判断和循环等控制逻辑,下列函数可以实现的有(ABCD)
A:rand_3 B:rand_21 C:rand_23 D:rand_47
对于rand_x(x<7)的直接截断,只要rand数大于x直接忽略,保证rand_x能够做到概率相等。而对于其他的则采用7×rand_7+rand_7,可以-7得到rand_49,然后截断成rand_42,统一除以2,则是rand_21,其他类似。
鉴于大家对这道题的解释看得不太清,我就在此展开解释一下:
首先分析:7×rand_7+rand_7
1. 首先它是由两个随机变量组成,亦即7X+Y,只不过X与Y是独立同分布的而已,所以上式子表示为Z=7X+Y
那么对于随机变量X,你可以理解为它是一个“量级”的概念,X取值为1~7
当X=1时,随机变量Z取值范围是1*7+(1~7),也就是8~14
当X=2时,随机变量Z取值范围是2*7+(1~7),也就是15~21
当X=3时,随机变量Z取值范围是3*7+(1~7),也就是22~28
以此类推。。。
可以产生8~56的随机数。
那么产生的8~56的随机数,概率都相等吗?
答案是必然的,因为X是量级的概念,达到每个量级的概率是1/7,在量级内,Y达到1~7每个数的概率依然是1/7,所以8~56的每个数的概率都是1/49
好了我们可以得到1/49等概率的8~56,直接在生产的时候-7,得到等概率1/49的1~49.。。。。
好,现在只需要记住,得到rand_49,1~49的每个数都是等概率的就可以了,因为我们要截断,也就是说,为了得到rand_23直接截断,判断输出如果>23,直接忽略,否则输出,大家可能有点别扭,因为有的随机数生成的时候可能时间上要比其他的长点。但是要记住,1~23每个数输出的概率都是相等的,只不过不能保证每次输出时间都分秒不差而已。时间长短是跟概率无关的概念。
转自:http://blog.csdn.net/zhlfox2006/article/details/11854799- 智力题2
- 智力题2
- 智力题2
- 智力题2
- 智力题2
- 智力题 2
- 智力题2
- 智力题2
- 面试智力题2
- 智力题(2)
- 经典智力题【2】
- 智力题(2)
- 程序员面试智力题 (2)
- 智力题小结(2)
- 【智力题】数字游戏2
- 智力题
- 智力题
- 智力题
- python简介
- luogu1967 货车运输
- PAT——1023组个最小数
- 在使用myeclipse10 新手上路学习hibernate 时产生如下错误org.hibernate.InvalidMappingException: Unable to read XML at
- jQuery根据name属性操作textarea、text、radio,通达OA表单js设计
- 智力题2
- 用canvas将qrcode生成的二维码与背景图片合成可以一起发送识别
- 绑定域名addon domain和停放域名parked domain的区别
- 设计模式二(模版方法设计模式)
- 如何判断两个对象是否一致
- 什么是Android.mk文件?
- python基础知识总结2
- kamon文档翻译(五)--考虑线程模型
- C/C++如何在Visual Studio里建立并运行多个含main函数的文件