统计计算作业:

  1. #########第二题#######  
  2. X=rep(0,100)  
  3. for(i in 1:100){  
  4.   u=runif(1);  
  5.   if(u<0.3){  
  6.     X[i]=1    }  
  7. else X[i]=2}   
  8. n=0  
  9. for(i in 1:length(X)){  
  10.   if(X[i]==1){  
  11.     n=n+1  
  12.   }  
  13. }  
  14. a=n/length(X)*100  
  15. sprintf('重复100次,1出现的百分比为:%f%%',a)  
  16.   
  17.   
  18. X=rep(0,1000)  
  19. for(i in 1:1000){  
  20.   u=runif(1);  
  21.   if(u<0.3){  
  22.     X[i]=1    }  
  23.   else X[i]=2}   
  24. n=0  
  25. for(i in 1:length(X)){  
  26.   if(X[i]==1){  
  27.     n=n+1  
  28.   }  
  29. }  
  30. a=n/length(X)*100  
  31. sprintf('重复1000次,1出现的百分比为:%f %%',a)  
  32.   
  33.   
  34. X=rep(0,10000)  
  35. for(i in 1:10000){  
  36.   u=runif(1);  
  37.   if(u<0.3){  
  38.     X[i]=1    }  
  39.   else X[i]=2}   
  40. n=0  
  41. for(i in 1:length(X)){  
  42.   if(X[i]==1){  
  43.     n=n+1  
  44.   }  
  45. }  
  46. a=n/length(X)*100  
  47. sprintf('重复10000次,1出现的百分比为:%f%%',a)

运行结果:

2、

  1. ##3##  
  2. x=rep(0,10)  
  3. n=0  
  4. for(i in 1:10){  
  5.   u=runif(1)  
  6.   x[i]=sin(pi/2*u)  
  7. }  
  8. sprintf('重复10次,生成的随机数为:')  
  9. print(x) 
  1. ##4##  
  2. X=rep(0,10)  
  3. for(i in 1:10){  
  4.   u=runif(1);  
  5.   X[i]=tan(pi*u)  
  6. }  
  7. sprintf('重复10次,生成的随机数为:')  
  8. print(X)  

结果:

3)

4)

解:

X=Rcosα;Y=Rsinβ

其雅可比矩阵为:

J=12Rcosα -Rsinα12RsinαRcosα=1

故X与Y独立。

故:

fX,Y=1*12e-12R=1*1e-12X2+Y2

由于X,Y相互独立,故:

fX=1e-12X2

fY=1e-12Y2

X~N(0,1),Y~N(0,1).

  1. #####21#####  
  2. #gx=x  
  3. t1=Sys.time()  
  4. c=1  
  5. x=rep(0,10)  
  6. n=0  
  7. while(n!=10){  
  8.   u1=runif(1)  
  9.   Y=-log(u1)  
  10.   u2=runif(1)  
  11.   if (u2<exp(-Y)){  
  12.     n=n+1  
  13.     x[n]=Y  
  14.   }  
  15. }  
  16. sprintf('重复10次,生成的随机数为:')  
  17. print(x)  
  18. t2=Sys.time()  
  19. t2-t1  
  20. #c=1执行step1的平均次数为1  
  21. #执行时间0.008308887 secs  
  22. #gx=2x  
  23. t1=Sys.time()  
  24. c=1/2  
  25. x=rep(0,10)  
  26. n=0  
  27. while(n!=10){  
  28.   u1=runif(1)  
  29.   Y=-log(u1)  
  30.   u2=runif(1)  
  31.   if (u2<exp(-Y)){  
  32.     n=n+1  
  33.     x[n]=Y  
  34.   }  
  35. }  
  36. sprintf('重复10次,生成的随机数为:')  
  37. print(x)  
  38. t2=Sys.time()  
  39. t2-t1  
  40. #c=1/2执行step1的平均次数为0.5  
  41. #执行时间0.00822401 

结果:

第一种方法:c=1,g(x)=x

第一种方法:c=1/2,g(x)=x/2

答:双指数分布的逆分布函数为:

F-1x=ln2x,x<0.5-ln2(1-y),x≥0.5

  1. ##逆变换法  
  2. X=rep(100)  
  3. for(i in 1:100){  
  4.   u=runif(1);  
  5.   if(u<0.5){  
  6.     X[i]=log(2*u)  
  7.     print(x[i])  
  8.   }  
  9.   else{  
  10.     X[i]=-log(2*(1-u))}  
  11. }  
  12. sprintf('重复100次,生成的随机数为:')  
  13. print(X) 

2,复合法:

  1. X=rep(100)  
  2. n=1  
  3. while(n!=101){  
  4.   u=runif(1);  
  5.   if(u<0.5){  
  6.     u1=runif(1)  
  7.     if(u1<0.5){  
  8.       X[n]=log(2*u1)  
  9.       n=n+1}}  
  10.     
  11.   if(u>=0.5){  
  12.     u2=runif(1)  
  13.     if(u2>0.5){  
  14.       X[n]=-log(2*(1-u2))  
  15.       n=n+1}}  
  16.       
  17.         
  18. }  
  19. sprintf('重复100次,生成的随机数为:')  
  20. print(X)  

结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值