# Rozdział 5 #5.1 #Generowanie wartości z rozkładu wykładniczego – metoda odwracania dystrybuanty n = 1000; lambda=2 u=runif(n) x= log(u)/(-lambda) y=rexp(1000,2) par(mfrow=c(1,2)) hist(x) hist(y) # 5.2 #Generowanie wartości losowych z rozkładu trójkątnego - metoda eliminacji n=100 z=c(); a=0; b=1; d=2 licz=0 repeat { u1=runif(1,a,b) u2=runif(1,0,d) if (u2<2*u1) {z=c(z,u1); licz=licz+1} if (licz>=100) break } x #5.3 #Funkcja generująca wartości losowe metodą eliminacji rtrojkat=function(n,a,b) { if (b<=a) {print('złe dane'); break} d=2/(b-a); licz=0; z=c() repeat { u1=runif(1,a,b) u2=runif(1,0,d) if (u2<2*(u1-a)/(b-a)^2) {z=c(z,u1); licz=licz+1} if (licz>=n) break } z } hist(rtrojkat(1000,2,4)) #5.4 #Generowanie wartości losowych z mieszanki rozkładów – metoda superpozycji rozkładów N=1000; p=0.4 m1=20; sigma1=2 m2=28; sigma2=2 x=c() for (i in 1:N) { los=rbinom(1,1,p) if (losexp(-x)) break } x=v/u print(x) #5.6 #Generowanie wartości z rozkładu dwumianowego n=10 p=0.5 z=0 for (i in 1:n) { if (runif(1)

=1) { u1=runif(1) u2=runif(1) v1=2*u1-1 v2=2*u2-1 s=v1^2+v2^2 } x1=v1*sqrt(-2*log(s)/s) x2=v2*sqrt(-2*log(s)/s) print(x1) print(x2) #5.15 #Generowanie wartości z rozkładu normalnego uciętego – metoda eliminacji n=100 z=c(); a=-2; b=2; d=dnorm(0) licz=0 repeat { u1=runif(1,a,b) u2=runif(1,0,d) if (u2=100) break } #5.16 #Generowanie wartości z rozkładu normalnego uciętego – metoda odrzucania x<-rnorm(1000) x<-x[(x<2 & x>-2)]