Chapter-8随机算法.pptVIP

  • 2
  • 0
  • 约1.09万字
  • 约 57页
  • 2017-05-30 发布于北京
  • 举报
随机算法 Random Algorithm 随机数发生器 随机数在概率算法设计中扮演着十分重要的角色。在现实计算机上无法产生真正的随机数,因此在概率算法中使用的随机数都是一定程度上随机的,即伪随机数。线性同余法是产生伪随机数的最常用的方法。由线性同余法产生的随机序列a0,a1,…,an满足 其中b=0,c=0,d=m。d称为该随机序列的种子。如何选取该方法中的常数b、c和m直接关系到所产生的随机序列的随机性能。这是随机性理论研究的内容,已超出本书讨论的范围。从直观上看,m应取得充分大,因此可取m为机器大数,另外应取gcd(m,b)=1,因此可取b为一素数。 圆周率计算 随机非重复采样问题 设有n 个样本,要求从中随机选出m 个样本(mn/2)。请设计一个随机算法来完成该任务,并分析该算法的时间复杂度。 思路: 将n个样本存放于数组Sample[1…n]中。数组Result[1…m]存放选中的m个样本。 定义一个长度为n的标志数组Flag[1…n]。Flag[i]=true表示对应位置的样本已经被选中;否则为未选中。 随机生成一个落在区间[1,n]的随机数r。若Flag[r]为false,Sample[r]追加到数组Result中,并将Flag[r]置为true;若Flag[r]为true,则重新生成随机数r,直到Flag[r]为false。重复此步骤,直到m个样本选择

文档评论(0)

1亿VIP精品文档

相关文档