算法设计——概率算法作业_第1页
算法设计——概率算法作业_第2页
算法设计——概率算法作业_第3页
算法设计——概率算法作业_第4页
算法设计——概率算法作业_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法设计概率算法作业 1概率算法二源代码概率算法三近似算法一. 概率算法Ex1. 若将 y uniform(0, 1) 改为 y x, 则上述的算法估计的值是什么?答:k/n 表示飞镖进入某一个区域内的概率,返回的值为 4k/n。因为:x uniform(0, 1), y x,在 x 和 y 满足 x2 + y2 1 时 k+所以:当 x在1,n 中随机取出 n 个整数,在这n 个整数中找 y,是正确的。算法设计:在一个已知的静态链表(其中每一个表项的含义是 data , rank )arrayNUM=5,1,7,8,3,4,0,2,4,0,11,7,17,9,14,6,9,5,20,10,21,12,25,13,23,11,30,15,34,-1,31,14中,分别使用A 、B 、C 、 D 算法查找 11 的位置。算法的执行结果:Ex7. 证明:当放置(k+1)th 皇后时,若有多个位置是开放的,则算法 QueensLV选中其中任一位置的概率相等。证:设 k+1 行皇后共找到 M 个 open 位置,则最后放入 Mth 位置的 p=1/M;最后放入(M-1)的 p 为:在 Mth 不取到 1 n n+2;until n=10000;与确定性算法相比较,并给出 10010000 以内错误的比例。算法设计:n 为 510000 时依次调用 RepeatMillRab(n,lgn),在 RepeatMillRab(n,lgn)中调用 MillRab(n),MillRab(n)判断 n 是否是一个素数,在 MillRab(n)中调用 BTest(n),判断 n 是一个强伪素数还是一个合数。算法的执行结果:将结果输出到一个文本文档中。其中首先依次输出 RepeatMillRab(n,lgn)找出的所有素数,并且统计 10010000 中的素数个数、将其输出;之后写了一个确定性算法,判断 10010000 中有多少个素数,将个数输出。用两个统计值算出 RepeatMillRab(n,lgn)算法在 10010000 中的的准确度。二. 源代码概率算法1.在机器上用 估计 值,给出不同的 n 值及精度。 (EX.2)10)(dxf#include#include#include#includedouble estimatePI(int n)int k=0,times=n;double x,y,temp;srand(int)time(0);dox=(1.0*rand()/(1.0*RAND_MAX);y=(1.0*rand()/(1.0*RAND_MAX);if(x*x+y*y)0);printf(“k is %dn“,k);double PI=4.0*(k*1.0)/n);return PI;int main()double pi;int n;printf(“please input the n:n“);scanf(“%d“,pi=estimatePI(n);printf(“pi is %fn“,pi);return 0;2. 设 a, b, c 和 d 是实数,且 a b, c d, f:a, b c, d是一个连续函数,写一概率算法计算积分: (EX.3)baxf)(#include#include#include#includefloat f(float x)return (x+4.0);float Calculate(int a, int b, int c, int d,int n, float (*f)(float) )srand(int)time(0);int i=0,x,y,x_realm=b-a+1,y_realm=d,k=0,s=0; /-c+1while(i#include#include#include#define PI 3.14/*验证算法(输入大小为 Exact_N 的集合,运行算法,得出估计值 N,将Exact_N 与 N 进行比较) ,并且探究集合的大小 n 与算法的效果(即估计值)的关系。*/int random_i(int N);int lookup(int val,int *array,int len);int estimateSet(int Exact_N)int *S; /指向数组头位置,值不变int k=0,elem,Estimate_N;sleep(1);srand(int)time(NULL);elem=rand()%Exact_N+1;S=(int *)malloc(sizeof(int)*Exact_N);memset(S,0,sizeof(S);int *arrayS;arrayS=S;while(!lookup(elem,S,k)arraySk=elem;k+;elem=rand()%Exact_N+1; /*可放回抽样,因此每次随机产生的 elem 都是在整个集合大小 Exact_N 中的。1,2,Exact_N*/Estimate_N=(int)(2*k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论