问题叙述:

*5.1-3  假设你希望以各1/2的概率输出0和1.你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1 - p输出0,其中 0 < p < 1,但是你并不知道p的值。给出一个利用BIASED-RANDOM作为子程序的算法,返回一个无偏向的结果,即以概率1/2返回0,以概率1/2返回1。作为p的函数,你的算法的期望运行时间是多少?

算法分析:

    已知BIASED-RANDOM可产生0和1,那么 1 - BIASED-RANDOM也产生1和0,且以1 - p的概率输出1,以p的概率输出0。

      如果我们将1 - BIASED-RANDOM看做另外一个函数发生器,和BIASED-RANDOM组合成对被调用,有以下结论:

      调用结果    00      01     10    11

      1的个数     0        1      1     2

      出现概率    (1-p)*(1-p)  (1-p)*(1-p)  p*p  p*(1-p)

    那么,进行一次调用,出现1的个数的期望值为: 0 * (1-p)*(1-p) + 1 * (1-p)*(1-p) + 1 * p*p + 2 * p*(1-p) = 1。进行4次成对调用,则1的期望个数为4。为什么要调用4次呢?因为BIASED-RANDOM产生0的概率和 1 - BIASED-RANDOM产生1的概率相等;BIASED-RANDOM产生1的概率和 1 - BIASED-RANDOM产生0的概率相等,那么4次刚好覆盖了所有组合对(00,01,10,11),也可进行8次,16次等调用。当进行4次成对调用后,统计1出现的个数,若小于4次,则返回0;大于4次,则返回1(这里相当于将4次调用封装为了一个函数)。但有个问题,等于4次该返回0还是1呢?(因为1的可能次数为0至8)所以,可进行大量成对调用,以使单个现象可被忽略。如,进行1024次调用,统计1的个数,小于1024返回0,否则返回1。

《算法导论》之 Problem 5.1-3(随机函数发生器的设计)相关推荐

  1. 你是如何坚持读完《算法导论》这本书的?(帖子收集)

    你是如何坚持读完<算法导论>这本书的? <算法导论>不够猛,答者顺便补充 "你是如何坚持读完<计算机编程的艺术>这本书的?" 罗必成: CLRS ...

  2. 《算法导论》中动态规划求解钢条切割问题

    动态规划算法概述 动态规划(dynamic programming)1是一种与分治方法很像的方法,都是通过组合子问题的解来求解原问题.不同之处在于,动态规划用于子问题重叠的情况,比如我们学过的斐波那契 ...

  3. 算法导论 算法_算法导论

    算法导论 算法 Algorithms are an integral part of the development world. Before starting coding of any soft ...

  4. MIT算法导论03-分治法

    MIT算法导论03-分治法(Divide and Conquer) 课程名:Introduction to Algorithms 课程编号:6.046J/18.410J 授课教师:Prof.Erik ...

  5. 算法导论-----最长公共子序列LCS(动态规划)

    目录 一.概念梳理 二.最长公共子序列解决方案 方案1:蛮力搜索策略 方案2:动态规划策略 三.C代码实现 实现1 实现2(空间优化) 一.概念梳理   1. 子序列(subsequence): 一个 ...

  6. 基本数据结构(算法导论)与python

    Stack, Queue Stack是后进先出, LIFO, 队列为先进先出, FIFO 在python中两者, 都可以简单的用list实现, 进, 用append() 出, Stack用pop(), ...

  7. 你是如何坚持读完《算法导论》这本书的?

    你是如何坚持读完<算法导论>这本书的? <算法导论>不够猛,答者顺便补充 "你是如何坚持读完<计算机编程的艺术>这本书的?" 罗必成: CLRS ...

  8. MIT的算法导论课程资料

    MIT的算法导论第一节课上,教授就说得了算法的performance的重要性,并非简单的只是快一点,慢一点,而是整个解决方案可行与不可行的差别.作为一个学生来说,在<算法导论>和<计 ...

  9. ebooks/算法导论官方配套课件下载(英文版)(Introduction to Algorithms,v3)中英部分内容对比/电子版教材下载/阅读/高中数学下载(zlib/微信读书)

    文章目录 官网资源 所在目录 核心内容 关于算法导论的中文翻译版 Chinese segment English segment 其他教材资源下载 下载说明 数学 考研复习可以参考的初等知识 其他教材 ...

最新文章

  1. python dlib 的安装
  2. 用svg实现一个环形进度条
  3. vim编辑器基础知识总结
  4. 在 Msys pacman安装vim后遇到的abcd与backspace问题..
  5. Android中Log信息的输出方法
  6. String path = request.getContextPath()和String basePath = request.getScheme()
  7. java学习(50):子类继承会优先调用父类的构造器
  8. 区块链中涉及到密码学的场景
  9. 关于mongodb的可视化工具:nosql manager for mongodb
  10. 【牛客网】——字符串的旋转
  11. 小程序 pc版 缓存路径_WordPress版微信小程序3.5版发布
  12. python软件下载-python软件下载
  13. cj20n sap 报错未知列的名称_SAP,PS模块配置和操作手册
  14. 【渝粤教育】国家开放大学2018年春季 7138-21T人际交流与沟通 参考试题
  15. 20155336虎光元 Exp1PC平台逆向破解及Bof基础实践
  16. ionicView视图的生命周期
  17. nmea怎么转wgs84坐标c语言源码,NMEA-0813数据格式说明
  18. Vue + Element 前端调用后端接口获取微信支付二维码和支付宝支付二维码
  19. 如何压缩pdf文件 把pdf文件变小
  20. 计算机中年级排名怎么操作,智学网年级排名查看方法规则介绍

热门文章

  1. 不学无数——适配器模式
  2. 第十一章:可绑定的基础结构(四)
  3. windows7用VMware workstation安装ubuntu server 16.04 虚拟机
  4. 嘿!你的“苹果”已经被盯上啦
  5. 吉哥系列故事——完美队形II(hdu4513+Manacher)
  6. 【黑金动力社区】【BF531 体验板教程】 第二章 MS531介绍(二)
  7. 【springmvc+mybatis项目实战】杰信商贸-2.数据库配置
  8. 二分查找算法(C#实现)
  9. codeforces 598C C. Nearest vectors(极角排序)
  10. servelt笔记一