随机数 模拟的是不确定性事件:rally的输赢是随机的 -这类模拟也称为Monte Carlo算法 如何用确定性的计算机模拟非确定性? 一用函数生成随机数(实际上是伪随机数) 人从种子值开始,计算出一个“随机”数; 人如果还需要,就用上一个随机数反馈给生成函数,生成下一 个随机数 -Python)库random提供了一些伪随机数生成函数: 人从加载库的日期时间导出种子值 人randrange():生成指定范围(类似range)内的一个整数 人random():生成[0,l)间的一个浮点数 Lu Chaojun,SJTU 6
随机数 • 模拟的是不确定性事件:rally的输赢是随机的. – 这类模拟也称为Monte Carlo算法 • 如何用确定性的计算机模拟非确定性? – 用函数生成随机数(实际上是伪随机数). ©从种子值开始,计算出一个“随机”数; ©如果还需要,就用上一个随机数反馈给生成函数,生成下一 个随机数. – Python库random提供了一些伪随机数生成函数: ©从加载库的日期时间导出种子值. ©randrange():生成指定范围(类似range)内的一个整数 ©random():生成[0,1)间的一个浮点数 Lu Chaojun, SJTU 6
用random模拟输赢 o 设发球人获胜概率是prob ·程序中显然需要这样的代码: f发球者胜了本回合: score score 1 -并且要使该条件为真的情况占prob ·用random函数模拟: if random()<prob: score score 1 Lu Chaojun,SJTU 7
用random模拟输赢 • 设发球人获胜概率是prob • 程序中显然需要这样的代码: if 发球者胜了本回合: score = score + 1 – 并且要使该条件为真的情况占prob • 用random函数模拟: if random() < prob: score = score + 1 Lu Chaojun, SJTU 7
自顶向下设计 ·对复杂问题常采用自顶向下设计: -将对一般问题的解决方案用若干个较小问题 来表达. 一再对较小问题用同样的方法分解. 一直至小问题很容易求解 一将所有小问题的解合并,就得到大问题的解 Lu Chaojun,SJTU 8
自顶向下设计 • 对复杂问题常采用自顶向下设计: – 将对一般问题的解决方案用若干个较小问题 来表达. – 再对较小问题用同样的方法分解. – 直至小问题很容易求解. – 将所有小问题的解合并,就得到大问题的解. Lu Chaojun, SJTU 8