编程珠玑笔记-第12章习题
1 ,rand的返回值最大值是7fff
使用位操作产生大的随机值
![](/assets/blank.gif)
![](/assets/blank.gif)
int bigRand() {return rand()<<15&rand(); } int rand(int l,int u) {int k=(rand()%3)<<30&(rand()<<15)&rand();return l+k%(u-l+1); }
2,随机选取0-n之间的一个i,取i,i+m-1共m个数,结果取模
3,m<n/2时,从n取一个数,在集合中的概率小于1/2,因此取值次数的期望是2
这里题目的描述并不严谨
4,总共要取m次,集合的大小从0,1,2...m-1,次数的期望分别是n/n,n/(n-1),n/(n-2)...n/(n-m+1)
当m=n时,和大概是nln(n)
7,第一问:添加一个最大值,输出时用最大值减一下,ps,如果m很大肯定会栈溢出
![](/assets/blank.gif)
![](/assets/blank.gif)
void randselect(int m,int n,int nMax) {if(m>0){if(rand()%n<m){printf("%d\n",nMax-n+1);randselect(m-1,n-1,nMax);}elserandselect(m,n-1,nMax);} }
第二问:每一个元素要么选要么不选,递归产生所有的情况
![](/assets/blank.gif)
![](/assets/blank.gif)
void randselect(int m,int n,vector<int> p) {if(m>0){if(n>m)randselect(m,n-1,p);p.push_back(n-1);randselect(m-1,n-1,p); }else{for (int i=0;i<p.size();i++){printf("%d ",p[i]);}printf("\n");} } int main() {vector<int> t;randselect(2,10,t);system("pause");return 1; }
8,产生有顺序的数,然后混合一下,书后答案是生成后就输出,这个答案比较靠谱..
基于集合的算法可以使用比如multiset保存数
直接生成m个数
9,使用Floyd的生成算法
可以证明每个元素被选到的概率相等
10,这个题目是看明白了,答案看不明白,谷歌一下终于明白了
答案的意思是说不断读取下一行,同时保存一个变量x指示当前应选择的行
在第n行时有1/n的概率将x设为n
可以用递归证明取每一行的概率都是1/n
11,其实就是3在12后面的概率,因为不用考虑其他元素,这个概率是1/3
12,话说我没找到它说的那个m=0就会崩溃的程序,知道作者指的是哪个程序,我觉的作者的意思是某个历史上的程序如何如何,我觉得这里翻译得不大好,有些歧义
测试方法:可以生成大量数据进行统计
转载于:https://www.cnblogs.com/mightofcode/archive/2012/11/11/2765439.html
编程珠玑笔记-第12章习题相关推荐
- 编程珠玑之第三章习题8
习题描述: 8.[S.C.Johnnson]七段显示设备实现十进制数字: 的廉价显示.七段显示通常如下编号: 编写一个使用5个七段显示数字来显示16位正整数的程序.输出为一个5个字节的数组,当且仅当数 ...
- 单片微型计算机徐春辉,单片微机原理及应用 徐春辉第12章 习题答案
第12章习题解答 1.I/O接口和I/O端口有什么区别?I/O接口的功能是什么? 解:I/O端口简称I/O口,常指I/O接口电路中具有端口地址的寄存器或缓冲器.I/O接口是指单片机与外设间的I/O接口 ...
- 《C Primer Plus》学习笔记—第12章
目录 <C Primer Plus>学习笔记 第12章 存储类别.链接和内存管理 1.存储类别 1.作用域 2.链接 3.存储期 4.自动变量 1.程序hiding.c 2.没有花括号的块 ...
- python核心教程第二版答案_python核心编程第二版第4章习题答案.docx
python核心编程第二版第4章习题答案.docx 4-1.Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 答案: 所有的 Python 对象都拥有三个特性:身 ...
- JAVA网络编程个人笔记 第4章 inet地址
JAVA网络编程个人笔记 第4章 inet地址 Internet寻址 创建InetAddress对象 常用方法 getLocalHost() 代码实现 getByName() 代码实现 getAllB ...
- c语言判断正整数位数 请用strengh,C语言程序设计-4、12章习题解答.doc
C语言程序设计-4.12章习题解答 C语言程序设计概述 一个C程序的执行是从 A . A.从main()函数开始,直到main()函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直 ...
- 编程珠玑第12章习题
内容来自互联网,做了一些修改 参考: http://blog.csdn.net/tianshuai1111/article/details/7583297 http://blog.csdn.net/t ...
- TMS320C6748开发视频教程笔记 第12章 通用输入输出口 GPIO
第12章 通用输入输出口 GPIO General-purpose input/output 12-1 相关例程演示 12-2 管脚复用配置 12-3 输入输出模式 12-4 中断 12-5 EDMA ...
- Real-time Rendering (3rd edition)学习笔记第1-2章
本博文仅作学习使用,欢迎学习渲染和计算机图形学的朋友相互讨论. 目录 第1章 介绍 1.1 内容概括 1.2 符号和定义 1.2.1 数学符号 1.2.2 几何定义 进一步阅读和参考资料 第2章 图形 ...
最新文章
- python下载的库要放到哪里-Python下载url并保存文件的三种方法
- java 网络驱动器_删除多余的网络驱动器
- python 支持什么操作系统_操作系统1:什么是操作系统?
- 大华的支持rtmp推流吗_海康大华DSS视频拉流-RTSP转RTMP多媒体播放技术
- 【心情】bjdldrz
- 前景看淡,移动医疗九成或将成炮灰
- 慕课网 机器学习基础、任务、分类等笔记
- 破圈了!完美日记凭什么让周迅成为全球品牌代言人
- C语言状态机模块实现
- ⭐⭐⭐【DFS+理解题意】找出直系亲属
- Java修炼——手写服务器项目
- Java-数据结构:树,这份资料可帮你解决95%的问题
- MATLAB实现将图片转化为gif格式的动画
- sqrt (2)不使用数学库,求2的开方。
- python 隐藏进程_python在windows下创建隐藏窗口子进程的方法
- 【iOS与EV3混合机器人编程系列之二】工欲善其事,必先利其器(准备篇)
- Elasticsearch7.x SQL语法查询支持
- java 电子相册_[Java教程]电子相册特效
- 【赛迪智库】美国允许自动驾驶汽车取消方向盘对我国L4级自动驾驶的影响
- 没弄懂的 Texture Mipmap Streaming (Unity 2018.2)
热门文章
- 不受支持的SQL类型1111
- Codeforces Round #716 (Div. 2) C. Product 1 Modulo N
- java 编译环境不一致_安装多JDK后,java编译环境和运行环境版本(JDK版本) 不一致解决:...
- dbutils mysql_mysql之DBUtils
- matlab离散点包络,求大神指点绘制空间内散点图的包络面,,,散点程序如下
- 计算机网络—局域网的基本概念和体系结构
- 词法分析 有穷自动机
- Qt QTimer在线程的应用与思考
- Codeforces Round #197 (Div. 2): D. Xenia and Bit Operations(线段树)
- 2017 Multi-University Training Contest - Team 4:1002. Classic Quotation(KMP+DP)