Homework 1

Aleksei Parm

2022-09-12

Lineaarne kongruentne generaator (LKG)

(ingl Linear congruential generator (LCG))

LKG <- function(n, seeme, a, b, m){
  tulemus <- rep(NA, n)
  tulemus[1] <- (a * seeme + b) %% m
  if(n > 1) {
    for (i in 1:(n - 1)){
      tulemus[i+1] <- (a * tulemus[i] + b) %% m
    }
  }
  return(tulemus/m)
}

RANDU

RANDU generaator on LKG parameetritega:

  • a = 65539
  • b = 0
  • m = 231

tegelikult väga halb generaator

RANDU <- function(n){
  return(LKG(n, 1, 65539, 0, 2^31))
}

Ülesanne

Vaatleme juhuslikku suurust Y = (X + 2)2, kus X on ühtlase jaotusega lõigus [0, 1].

Suurte arvude seaduse kohaselt peaks ühtlasele jaotusele vastavate juhuslike arvude x1, x2, … korral
arvude yi = (xi + 2)2 , i = 1, 2, … aritmeetiline keskmine lähenema n kasvades juhusliku suuruse Y keskväärtusele.

Leidke ligikaudselt juhusliku suuruse Y keskväärtus, kasutades juhuslike arvude asemel 10000 RANDU generaatoriga (enda valitud seemnest lähtuvalt) tekitatud pseudojuhuslikku arvu.

n <- 10000
X <- RANDU(n)

Y <- (X + 2)^2
EY <- mean(Y)
EY
## [1] 6.333702


Arvutage ka täpne keskväärtus EY (selgitades, mida selleks teha tuleb) ning leidke eelnevalt saadud ligikaudse keskväärtuse viga.

\[EX = \int_{-\infty}^\infty xf(x) ~dx\]

\[EY = E((X+2)^2)\]

Kui tihedusfunktsioon f(x) = 1, 0 ≤ x ≤ 1 korral ja f(x) = 0 mujal:

\[EY = \int_0^1 (x+2)^2 ~dx = \int_0^1 (x^2 + 4x + 4) ~dx = (\frac{x^3}{3} + 4\frac{x^2}{2} + 4x)\bigg|_0^1\]

a <- 0
b <- 1
EY2 <- (b^3/3 + 4*b^2/2 + 4*b) - (a^3/3 + 4*a^2/2 + 4*a)
EY2
## [1] 6.333333
EY - EY2
## [1] 0.0003684641

NB! täpse keskväärtuse leidmiseks tuleb leida keskväärtusele vastava integraali väärtus valemi kujul ning alles seejärel välja arvutada valemile vastav väärtus, numbrilise integreerimise vahendid (nt käsk integrate) ei sobi siin kursuses täpse väärtuse leidmiseks!