2.1.8 创新习题

22. 生日问题(Birthday problem)。编写一个使用适当函数的程序,以研究生日问题(具体请参见1.4节习题第35题)。

23. 欧拉函数(Euler's totient function)。欧拉函数是数论中的一个十分重要的函数:φn)定义为少于或等于n的数中与n互质(即与n之间除1以外没有其他的公因子)的正整数的数目。请编写一个函数,实现如下功能:接收一个整数参数n,返回φn)。可按如下步骤编写全局代码:从命令行接收一个整型的参数,调用函数,然后输出结果。

24. 调和数(Harmonic number)。请编写一个程序harmonic.py,实现如下功能:定义三个函数harmonic()、harmonicSmall()和harmonicLarge(),计算调和数。harmonicSmall()函数仅仅计算累计和(参见程序2.1.1);harmonicLarge()函数使用近似公式:Hn=logen)+γ+1(2n)-1/(12n2)+1/(120n4)(其中,数值γ = 0.577215664901532,称为欧拉常数);对于harmonic()函数,如果n < 100,则调用harmonicSmall(),否则调用harmonicLarge()。

25. 高斯随机值(Gaussian random value)。请编写一个程序,尝试运行如下函数,函数通过高斯分布生成随机变量,函数基于在单位圆中产生一个随机点的算法,并使用Box-Muller公式(参见程序1.2.24)的一种形式。

程序带一个命令行参数n,产生n个随机数值,使用一个包含20个整数的数组统计位于区间i * .05到(i + 1)* .05(i从0到19)中随机数的数目。然后使用stddraw模块绘制这些值,将绘制的结果与一般的钟型曲线相比较。注意:这种方法比1.2节习题第24题中的方法更快更准确。虽然包括一重循环,但循环的次数平均只有4/π(约为1.273)次。这就降低了对先验函数调用的整体预期数目。 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.