\[ P(X+Y=j)=\begin{cases} \dfrac{j+1}{(N+1)^2}, & se & j \in \{\;0,\cdots,N\;\},\\\\ \dfrac{2N-j+1}{(N+1)^2}, & se & j \in \{N+1, \cdots, 2N\},\\\\ 0, & se & j\not\in \{0,\cdots,2N\}. \end{cases} \]
set.seed(123456)
library(purrr) # biblioteca para gerar as amostras
# da distribuicao unif. discreta. Nao existe no R base.
# Construcao da funcao que calcula as probabilidades
probab.conv <- function(j,N){
n<- 1e7 # tamanho amostral
set.seed(123456)
x<- rdunif(n,b = N,a = 0) # geracao da amostra x
y<- rdunif(n,b = N,a = 0) # geracao da amostra y
if (j <= N & j>= 0){
prob.teo <- (j+1)/(N+1)^2 # prob. teorica
}else if(j > N & j <= 2*N){
prob.teo <- (2*N-j+1)/(N+1)^2 # prob. teorica
}else{
prob.teo <- 0
}
prob.sim <- mean( (x+y)==j ) # prob. simulada
return(list(probab.simulada=prob.sim, probab.teorica=prob.teo))
}
probab.conv(4,10) # j=4 e N=10
## $probab.simulada
## [1] 0.0412876
##
## $probab.teorica
## [1] 0.04132231
probab.conv(10,7) # j=10 e N=7
## $probab.simulada
## [1] 0.0781256
##
## $probab.teorica
## [1] 0.078125
probab.conv(20,7) # j=20 e N=7 (j > 2*N)
## $probab.simulada
## [1] 0
##
## $probab.teorica
## [1] 0
probab.conv(-2,9) # j=-2 e N=7 (j < 0)
## $probab.simulada
## [1] 0
##
## $probab.teorica
## [1] 0
\[ P(X+Y=j)=\begin{cases} \dfrac{j+1}{(N+1)^2}, & se & j \in \{\;0,\cdots,min\{N,M\}-1\;\},\\\\ \dfrac{min\{N,M\}+1}{(N+1)(M+1)},& se & j \in \{min\{N,M\},\cdots, max\{N,M\}\},\\\\ \dfrac{(N+M)-(j-1)}{(N+1)(M+1)}, & se & j \in \{max\{N,M\}, \cdots, 2N\},\\\\ 0, & se & j\not\in \{0,\cdots,2N\}. \end{cases} \]
# Construcao da funcao que calcula as probabilidades
probab.conv.g <- function(j,N,M){
set.seed(123456)
n<- 1e7 # tamanho amostral
x<- rdunif(n,b = N,a = 0) # geracao da amostra x
y<- rdunif(n,b = M,a = 0) # geracao da amostra y
mm <- min(N,M)
MM <- max(N,M)
if (j >=0 & j <= mm - 1) {
prob.teo <- (j+1) / (N+1)^2
} else if (j >= mm & j <= MM){
prob.teo <- (mm + 1) / ( (N+1)*(M+1) )
} else if (j >= MM & j<= 2*N) {
prob.teo <- ( (N+M) - (j-1) ) / ( (N+1)*(M+1) )
} else {
prob.teo <- 0
}
prob.sim <- mean( (x+y)==j ) # prob. simulada
return(list(probab.simulada=prob.sim, probab.teorica=prob.teo))
}
probab.conv.g(4,10,10)
## $probab.simulada
## [1] 0.0412876
##
## $probab.teorica
## [1] 0.04132231
probab.conv.g(10,7,7) #j=10, N=M=7
## $probab.simulada
## [1] 0.0781256
##
## $probab.teorica
## [1] 0.078125
probab.conv.g(20,7,7) #j=20, N=M=7 ( j>2N )
## $probab.simulada
## [1] 0
##
## $probab.teorica
## [1] 0
probab.conv.g(-2,9,9) #j=-2, N=M=9 ( j<0 )
## $probab.simulada
## [1] 0
##
## $probab.teorica
## [1] 0
probab.conv.g(15,20,24)
## $probab.simulada
## [1] 0.0304855
##
## $probab.teorica
## [1] 0.03628118