Simulation en R — Les-mathematiques.net The most powerful custom community solution in the world

Simulation en R

Modifié (1 Jan) dans Informatique théorique
Bonjour,
je voudrais faire la simulation suivante sur n pas :

"Faire un saut de +1 ou -1 selon une loi de Bernoulli."
si c'est +1 générer un nombre selon une loi uniforme sur [0, 1] et l'ajouter à L.
si c'est -1 supprimer le inf de la liste L et le placer dans une liste R.
x = sample(c(-1, 1), size=1, replace = T, prob = c(4/9, 5/9))
L = c(0)
u = runif(1, 0, 1)
if (x == 1) {
    L = c(L, u)
} else {L = L[L!= min(L)]}
Comment avec n pas compléter les listes L et R ?

Réponses

  • Comment avec n pas compléter les listes L et R ?

    Je ne comprends pas la question. Qu'est-ce que "n" ? Qu'est-ce que "R" ? Cette phrase n'est pas écrite en bon français, d'abord.
  • R est un langage de programmation.

    Comment, avec $n$ pas, compléter les listes nommées $L$, et $R$.
  • Exactement.
  • Oui, je connais très bien R. Je n'avais pas vu la "liste R" dans l'énoncé, désolé.
    Quid si tu obtiens deux fois -1 au départ? Le vecteur L sera vide et tu veux supprimer le min.
  • Il s'agit d'une chaine de Markov : on démarre avec une liste vide. l'état reste à 0 avec probabilité 1-p et passe à 1 avec probabilité p.
    A l'état n, on a pris n nombres uniformément repartis.
    A chaque changement d'état de i à i+1 on ajoute un nombre dans L.
    A chaque changement d'état de i à i-1 le minimum de L passe dans R.

    C'est un modèle d'évolution des espèces (vie et mort). L sont les survivants et R les décès.

    Mon explication est-elle plus claire ?
    (C'est le modèle de Hervé Guiol.)
  • Si tu obtiens -1 au premier coup, tu supprimes le min de L sera alors vide. Alors si tu obtiens aussi -1 au deuxième coup, comment supprimer le min de L, puisque ce vecteur est vide ?
  • Absolument, on ne supprime le min que si L est non vide. J'avais effectivement oublié de la préciser.
  • Je ne connais pas du tout R.
    Je n'aime pas faire les exercices à la place des élèves, au mieux, je peux essayer d'aider.
    Ici, je pense qu'on devrait avoir une boucle. Avec des mots en français : 'répéter telle opération tant que ... '
    Dans beaucoup de langages, les mots-clés pour faire une boucle, c'est WHILE ou LOOP ou FOR , et je ne vois aucun de ces mots dans ton code.
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!