rremb <- function(n, params) {
# Extraire les paramètres depuis la liste params
alpha <- params$alpha
x0 <- params$x0
eta <- params$eta
# Vérifier si les paramètres sont corrects
if (alpha <= 0 | x0 <= 0 | eta <= 3) {
stop("Mauvais paramètres : alpha doit être > 0, x0 > 0 et eta > 3")
}
# Facteur de normalisation K
K <- 2 * alpha^(1 - eta) / (eta - 1)
# Fonction inverse de F* (sans facteur de normalisation)
F_star_inv <- function(z) {
if (z <= 0.5) {
# Cas où x <= x0
return((alpha + x0 - (z * (eta - 1))^(1 / (1 - eta))))
} else {
# Cas où x > x0
return((x0 - alpha + ((1 - z) * (eta - 1))^(1 / (eta - 1))))
}
}
# Fonction inverse de F en tenant compte de K
F_inv <- function(y) {
return(F_star_inv(K * y))
}
# Générer n valeurs uniformes sur (0, 1)
u <- runif(n)
# Utiliser F_inv pour générer des valeurs selon P_r
x <- sapply(u, F_inv)
return(x)
}
# Paramètres
params <- list(alpha = 2.0, x0 = 50.0, eta = 4.0)
# Simulation des valeurs
n <- 100000 # Ajuster selon vos besoins
valeurs_simulees <- rremb(n, params)
# Afficher les résultats
print(head(valeurs_simulees, 10))
# Optionnel : Tracer l'histogramme des valeurs simulées
hist(valeurs_simulees, breaks = 50, main = "Histogramme des valeurs simulées",
xlab = "Valeurs", ylab = "Fréquence", col = "skyblue")
Voici le nouveau code que j'obtiens en faisant comme tu as dit.
J'exécute 10 000 simulations en pratiquement 3 secondes.
Mais j'ai des copains qui sont à 8 secondes pour 63 millions de simulations..
Est-ce dû à ma machine ?