Príklad o narodeninách a lístku do kina

n <- 10
n*prod(seq(from = 364, by = -1, length.out = n-1))/(365)^n
## [1] 0.0241932
# ?polyroot
polyroot(c(365, 363, -1))
## [1]  -1.00274+0i 364.00274+0i
n <- 365
n*prod(seq(from = 364, by = -1, length.out = n-1))/(365)^n # numericky problem
## [1] NaN
pn <- function(n) n*prod(seq(from = 364, by = -1, length.out = n-1))/(365)^n
pn(10)
## [1] 0.0241932
pn(15)
## [1] 0.03070269
pn(20)
## [1] 0.03224995
pn(30)
## [1] 0.02413839
polyroot(c(365, -1, -1)) # opravena kvadraticka rovnica
## [1]  18.61151+0i -19.61151+0i
pn(18)
## [1] 0.03220711
pn(19)
## [1] 0.03231986
pn(20)
## [1] 0.03224995
pn(300)
## [1] NaN
n <- 10
n*prod(seq(from = 364, by = -1, length.out = n-1))/(365)^n
## [1] 0.0241932
seq(from = 364, by = -1, length.out = n-1)
## [1] 364 363 362 361 360 359 358 357 356
log(seq(from = 364, by = -1, length.out = n-1))
## [1] 5.897154 5.894403 5.891644 5.888878 5.886104 5.883322 5.880533 5.877736
## [9] 5.874931
sum(log(seq(from = 364, by = -1, length.out = n-1)))
## [1] 52.9747
pn2 <- function(n) {
  log_pn <- log(n) + sum(log(seq(from = 364, by = -1, length.out = n-1))) - n*log(365)
  return(exp(log_pn))
}
pn2(10)
## [1] 0.0241932
pn(10)
## [1] 0.0241932
pn2(300)
## [1] 5.13315e-82

Ostatné príklady

19/36
## [1] 0.5277778
(3/4)^(1:10)
##  [1] 0.75000000 0.56250000 0.42187500 0.31640625 0.23730469 0.17797852
##  [7] 0.13348389 0.10011292 0.07508469 0.05631351
(0.15*0.75)/(0.15*0.75 + 0.25*0.85) # 0.3461538
## [1] 0.3461538