#*****************************************************
# ROBOT TOM
# ANTILLES GUYANE Septembre 2013
# L'algorithme de l'énoncé, exercice 4-1.
robtom1 <- function(){
x <- 0 ; y <- 0 ; urne <- c(-1, 0, 1)
while (y >= -1 & y <= 1 & x <= 9) {
n <- sample(urne, 1)
y <- y + n
x <- x + 1
}
# Affichage des résultats
cat("La dernière position de TOM sur le pont : A(",
x, ",", y, ")\n\n")
}
#-----------------------------
# Exercice 4-2. Qualification de l'arrivée, traversé ou tombé
robtom2 <- function(){
x <- 0 ; y <- 0 ; urne <- c(-1, 0, 1)
while (y >= -1 & y <= 1 & x <= 9) {
n <- sample(urne, 1)
y <- y + n
x <- x + 1
}
# Affichage des résultats
if (y == -2 | y == 2) {
cat("TOM est tombé dans l'eau\n")
cat("La dernière position de TOM est : A(",
x, ",", y, ")\n\n")
} else {
cat("TOM a réussi la traversée du pont\n")
cat("La dernière position de TOM sur le pont : A(",
x, ",", y, ")\n\n")
}
}
#--------------------------------
# REPRÉSENTATION GRAPHIQUE DE LA MARCHE DE TOM
robtom3 <- function(){
x <- 0 ; y <- 0 ; urne <- c(-1, 0, 1)
suiteX <- 0 ; suiteY <- 0
while (y >= -1 & y <= 1 & x <= 9) {
n <- sample(urne, 1)
y <- y + n
x <- x + 1
suiteX <- c(suiteX, x) ; suiteY <- c(suiteY, y)
}
# Représentation graphique du cheminement
plot(c(0, 10), c(1, -1), type = "n",
main = "Cheminement de TOM",
xlab = "", ylab = "",
xaxp = c(0, 10, 10), yaxp = c(-1, 1, 2))
lines(suiteX, suiteY,
type = "o", pch
= 19, col
= "orange", lwd
= 2)
abline(h = c(-1, 1), lwd = 2)
grid(col = "grey50")
if (y == 2 | y == -2) {
text(suiteX[x], suiteY[x], pos = 2, labels = "PLOUF",
col = "blue", cex = 2)
} else {
text(suiteX[11], suiteY[11], pos = 2, labels = "TRAVERSE",
col = "orange", cex = 2)
}
}
#---------------------------------
# DE LA SIMULATION D'UNE MARCHE ALÉATOIRE AU CALCUL D'UNE ESTIMATION
# DE LA PROBABILITÉ DE TRAVERSER LE PONT EN SIMULANT nbsim MARCHES ALÉATOIRES
robtom4 <- function(nbsim = 2000){
urne <- c(-1, 0, 1)
statPont <- 0 ; statY <- NULL ; statX <- NULL
for (k in 1:nbsim) {
x <- 0 ; y <- 0
suiteX <- 0 ; suiteY <- 0
while (y >= -1 & y <= 1 & x <= 9) {
n <- sample(urne, 1)
y <- y + n
x <- x + 1
suiteX <- c(suiteX, x) ; suiteY <- c(suiteY, y)
}
# Pont <- ((x == 10 & y == -1) | (x == 10 & y == 1) | (x == 10 & y == 0))
Pont <- (y != -2 & y != 2)
statPont <- statPont + Pont
statX <- c(statX, x) ; statY <- c(statY, y)
}
PCPont <- statPont / nbsim
# Affichage des résultats et des graphiques
cat("Une estimation de la probabilité de passer le pont :", PCPont, "\n\n")
# Représentation graphique des distributions des séries
# simulées des abscisses et des ordonnées des positions
# de la fin de la marche du robot sur le pont.
plot(table(statX) / nbsim,
main = "Distribution des abscisses d'arrivée", lwd = 3)
grid(col = "grey50")
plot(table(statY) / nbsim,
main = "Distribution des ordonnées d'arrivée", lwd = 3)
grid(col = "grey50")
# Représentation graphique du dernier cheminement
plot(c(0, 10), c(1, -1), type = "n",
main = "Dernière simulation du cheminement de TOM",
xlab = "", ylab = "",
xaxp = c(0, 10, 10), yaxp = c(-1, 1, 2))
lines(suiteX, suiteY,
type = "o", pch
= 19, col
= "orange", lwd
= 2)
abline(h = c(-1, 1), lwd = 2)
grid(col = "grey50")
if (y == 2 | y == -2) {
text(suiteX[x], suiteY[x], pos = 2, labels = "PLOUF",
col = "blue", cex = 2)
} else {
text(suiteX[11], suiteY[11], pos = 2, labels = "TRAVERSE",
col = "orange", cex = 2)
}
}