Instantly share code, notes, and snippets.

# ac00std/actuary_exam2 Created Feb 12, 2018

 ac_exam2=function(n,p1_low,p1_high,p2_low,p2_high,study1,study2){ #n：持っている科目数 #p1_low:1次試験科目の合格率下限 #p1_high:1次試験科目の合格率上限 #p2_low:2次試験科目の合格率下限 #p2_high: 2次試験科目の合格率上限 #study1:勉強により科目1の合格率を引き上げることができる #study2:勉強により科目2の合格率を引き上げることができる #year:受験年数 #year1:1次試験合格年数 #year2:2次試験合格年数 year=0 while(n<4){ year=year+1 k=rep(0,5) t1=5-n k[1]=rbinom(1, 1, runif(1,p1_low,p1_high)+study1) k[2]=rbinom(1, 1, runif(1,p1_low,p1_high)+study2) for(i in 3:t1){ k[i]=rbinom(1, 1, runif(1,p1_low,p1_high)) } n=n+sum(k) } while(n<5){ year=year+1 k=rep(0,5) k[1]=rbinom(1, 1, runif(1,p1_low,p1_high)+study1+study2) n=n+sum(k) } year1=year while(n<6){ year=year+1 l=rep(0,2) l[1]= rbinom(1, 1, runif(1,p2_low,p2_high)+study1) l[2]= rbinom(1, 1, runif(1,p2_low,p2_high)+study2) n=n+sum(l) } while(n<7){ year=year+1 l=rep(0,2) l[1]= rbinom(1, 1, runif(1,p2_low,p2_high)+study1+study2) n=n+sum(l) } year2=year result=cbind(year1,year2) return(result) } ac_exam2(0,0.1,0.3,0.1,0.2,0.25,0.25) #シミュレーションをN回行ってみる。 sim2=function(N,n,p1_low,p1_high,p2_low,p2_high,study1,study2){ res=matrix(0,N,2) for(i in 1:N){ res[i,]=ac_exam2 (n,p1_low,p1_high,p2_low,p2_high,study1,study2) } return(res) } test_50=sim2(10000,0,0.1,0.3,0.1,0.2,0.25,0.25)