描述random(a, b)过程的一种实现,它只调用random(0,1)。作为a和b的函数,
你的程序期望运行时间是多少?
算法描述
这个题目相当于在能随机生成0,1的前提下,要求生成[0, 1, ...,n-1]范围内的一个整数
1 求出最小的 m,使2^m >= n-1
2 通过random(0,1),产生一个m比特的整数,这样能随机产生[0, 2^m-1]内的整数,
若产生的整数位于[0, n-1]内,则取这个数作为结果。如果这个数在[0,n-1]外,则丢弃它,再次运行算法重新生成一个。
算法的正确性
a) 证明上述算法可以产生 [0, n-1]范围内的随机数
在范围[0,1, ..., n-1, n, ..., 2^m-1]范围内,总共有p = 2^m个数,其中合法的数是[0, 1, ..., n-1]共n个,
非法的数为 [n, ..., 2^m-1]共q = 2^m-n个,则有 n + q = p。
算法最后会产生一个合法的随机数 X,0 <= X <= n-1, 显然 X 是
[0, n-1] 上的一个均匀分布。 P{X = i } = 1/n, 所以上述方法可以产生随机数
算法的复杂度
算法的数学模型是: 重复一系列伯努力实验,每次实验成功的概率是 n/p, 失败的概率是 q/p。
在取得一次成功前一共要进行多少次试验?
设Pi表示产生随机数时运行了i次算法的概率,那么前i-1次产生的都是非法的数,
第i次产生的是合法的数,所以
这是典型的几何分布,其期望值等于成功概率的倒数为: p/n = 2^m / n
- 大小: 4 KB
- 大小: 937 Bytes
分享到:
相关推荐
根据提供的文件信息,可以看出这是一本关于《算法导论》习题解答的手册。下面将对文件中的几个关键章节进行详细解析,以便更好地理解其中所包含的重要知识点。 ### 一、算法在计算中的角色(第1章) 这一章主要...
例如,习题5.1-1解释了一个简单的排序过程是如何工作的。习题5.2-1至5.2-5则探讨了如何利用这些设计技巧来解决实际问题。习题5.3-1至5.3-6则涉及了概率算法的设计及其分析。 ### 第6章 堆排序 第六章详细介绍了堆...
5.1-2可能是关于堆排序的时间复杂度分析;5.1-3至5.1-5则可能探讨了堆排序与其它排序算法的对比、堆排序的空间复杂度分析等。 #### 习题5.2-1至5.2-5 这部分习题进一步深入堆排序的具体实现细节,如如何通过递归或...
根据提供的信息,《算法导论习题答案(全)》涵盖了原书第二版的习题解答。这份资料提供了从第2章到第25章的详细解答,涉及算法的基础概念、设计与分析技巧等内容。下面将从给定的部分内容中提取并总结关键知识点。 ...
根据提供的信息,《算法导论第二版(中文...通过以上对各章节习题的解析,可以看出《算法导论》第二版这本书覆盖了算法设计与分析领域的核心知识点,不仅提供了理论上的指导,还提供了大量的实践案例供读者学习和练习。
- **5.1-2** 探讨了递归式的定义和性质。 - **5.1-3** 分析了递归式的求解方法。 - **5.1-4** 提供了递归式求解的具体实例。 - **5.1-5** 分析了递归式在算法设计中的应用。 #### 5.2 替换法 - **5.2-1** 介绍了...
综上所述,《算法导论习题答案》不仅提供了具体的习题解答,更重要的是通过这些练习帮助读者深刻理解算法设计与分析的基本概念和技术。这些章节涵盖的内容广泛,包括排序算法、递归算法、分治策略、数据结构(如二叉...
通过对以上章节及其习题的分析,可以看出《算法导论》这本书不仅覆盖了算法设计的基本概念,还深入讨论了各种高级算法的设计与分析技巧。无论是对于计算机科学专业的学生还是对算法感兴趣的读者来说,都是极好的学习...
- **5.1-2**:给出具体的求解示例。 - **5.1-3**:可能讨论递归式求解的复杂性。 #### 5.2 分治法应用 - **5.2-1**:介绍分治法在实际问题中的应用案例。 - **5.2-2**:分析分治法在解决实际问题时的性能表现。 - ...
- **5.1-2**:理解快速排序算法的工作原理。 - **5.1-3**:研究快速排序算法的性能特点。 - **5.1-4**:探讨快速排序算法的变体。 #### 5.2 概率分析和随机算法 - **5.2-1**:学习概率分析的基本方法。 - **5.2-2*...
根据提供的信息,《算法导论习题解答》涵盖了重要的章节习题解答,这是一本非常有价值的参考资料,特别是对于学习算法的学生和专业人士来说。下面将详细解释并总结这些章节中的一些关键知识点。 ### 第2章 排序与...
从给定的文件信息来看,这是一份关于《算法导论》教材的课后习题解答,涵盖了第二至第九章、第十五章以及第十六章的部分习题答案。以下是对这些章节涉及的主要知识点的总结与解析: ### 第二章:算法分析基础 此...
这些练习题帮助理解如何计算算法的时间复杂度。 #### 4.2 大Ω表示法 - **4.2-1 至 4.2-5**: 类似于大O表示法,大Ω表示法用于描述算法的最佳情况时间复杂度。 #### 4.3 Θ表示法 - **4.3-1 至 4.3-5**: Θ表示法...
根据提供的信息,《算法...综上所述,《算法导论》中的习题涵盖了广泛的知识点,从基础的算法概念到具体的算法实现,再到高级的算法设计技巧。这些习题不仅能够帮助读者巩固所学知识,还能激发读者对算法设计的兴趣。