编程珠玑 习题 十二章

原创 2012年03月27日 22:09:29

注:以下皆为个人理解,非标准答案

12.5.1:

  • bigrandrand函数随机产生15位,那么用两次rand函数再拼接起来就形成了30个随机位
  • randint(l,u)将rand出的数映射到l,u 之间即可,一个实现方法是mod(u-l)+l 

12.5.8:

  • [0..n-1] 中选取 个数并乱序输出先用12.1中的算法产生选出的m个数,然后进行洗牌算法(12.3中所说的‘弄乱)并输出
  • 允许重复,要生成顺序列表每选出一个数后,还是从头遍历数组进行下一次选择;最后排序输出
  • 允许重复,乱序输出:同上,只是省略了排序

12.5.9:

  • 作者坚持要用set的方法并且最多只用m次rand函数:那么必须要避免取到重复数的情况。可以先产生一个数组a[0..n-1]a[i]=i;第j 次循环index = rand() mod (n-j+1),然后取 a[index]  放入set,并用 a[n-j] 替换掉 a[index]。可能看上去比较复杂,思想就是每次从干净的数中取一个放入set,并将该数移除,这样以后就不会取到重复的数;上述方法就是该思想的一个实现

12.5.10:

  • n个对象按序排列,事先不知道n,如何随机输出一个对象:此题的意思我的理解是顺序的读进来若干对象,当读到结束符时就马上随机输出一个对象。既然是随机输出,那么在读完n个对象之前是无法决定输出哪个对象的,否则无法保证每个对象的输出概率相同。这也就是说完全可以记录下n然后 rand() mod n。所以不知道作者这里的出题意图是什么
  • 看到一个类似的题,给你一个长度为 N 的链表。N 很大,但你不知道 N 有多大。你的任务是从这 N 个元素中随机取出 k 个元素。你只能遍历这个链表一次,且必须保证取出的元素是完全随机的同上题,可采用蓄水池算法(Reservoir Sampling),假设选出来的元素存入 R[1..k] 数组中,链表记为 S,首先把遇到的前k个表元素赋值给 R[k],然后遍历 S[k+1]..S[n](下标记为i),j = rand(1,i),如果 j 在1~k范围内则用S[i] 替换 R[j] ;反复进行直到链表遍历完。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

编程珠玑之第三章习题1

问题描述: 1. 本书行将出版之时,美国的个人所得税分为5种不同的费率,其中最大的费率大约为40%。以前的情况更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方式来计算1978年的美...

编程珠玑 第4章 习题

1. 采用循环的方式时,判断low 2.#include using std::cout; using std::endl; int binarySearchFirst(int a[...

编程珠玑第1章部分课后习题答案注解

1.如果不缺内存,使用一个具有库的语言来实现一种排序算法以表示

编程珠玑之第三章习题2

问题描述: 问题解析: 1、如果咨询研究其规律,会发现其输入的km的a的值由上面公式就可以递推到! 2、研究其性质,会发现a[1] = c[k+1]是永远不会变得,那么由a[1]就可以向后推得知a...

编程珠玑之第12章习题1: 随机位问题

习题描述:C库函数rand()通常返回约15个随机位。使用该函数实现函数bigrand和bigrand和randint(l, u), 要求前者至少返回30个随机位,后者返回[l,u]范围内的一个随机整...

编程珠玑 第一章 习题解答

from: http://www.fookwood.com/archives/605 第一章简单来说就介绍了个用bitmap排序的实例,从思维上给了我们思考问题的另一个角度。 ...

编程珠玑第三章习题3.7(5-8)

5.将输入的单词表示成带有后缀连字符的单词package chapter3;public class t5 { public static String matchSuffix(String...

编程珠玑第8章-课后习题10题补充

按照原题的意思是在题目上进行扩展。 本来是要找一个连续子数组,其和最大。 那么现在习题的要求是找到这么一个连续子数组,其和的绝对值最接近0。 O(n^3)或O(^2)的实现 都很好处理。O(n...
  • ju136
  • ju136
  • 2011-11-16 12:54
  • 1624

《编程珠玑》习题练习In Python——第一章 开篇

问题:如何给磁盘文件排序 输入:一个包含最多n个正整数的文件,每个数都小于n,其中n=10^7。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该数据相关联。 输出:按升序排列...

编程珠玑第一章课后习题

1、使用库函数来进行排序 这个不同语言有不同的库函数排序c有qsort,java有sort排序,具体就不贴代码了。 2、用位逻辑实现位运算 这个道题的核心就在于想要把某bit置0,将该位直接和0做...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)