Page 1 sur 1

Tirer un nombre aléatoire dans une loi quelquonque

Message non luPosté: 25 Juil 2017, 12:16
de Persalteas
Salut :)

Connaissez vous un algorithme relativement simple à implémenter sur 83 Premium CE qui permettrait le choix d'une valeur d'angle aléatoire (dans l'intervalle [0, 2pi]), mais selon une distribution de probabilité bien particulière ?

En l'occurrence, ma densité de probabilité est continue par morceaux (des fragments de droites).

J'allais partir sur une méthode de Monte-Carlo, mais si il existait quelque chose de plus simple et demandant moins de calculs, je vous demande au cas où.
Merci pour vos idées ! ;)

Persalteas

Re: Tirer un nombre aléatoire dans une loi quelquonque

Message non luPosté: 30 Juil 2017, 13:32
de Adriweb
Je ne crois pas qu'il y ait un moyen de faire ça optimalement (une fonction prévue pour, je veux dire) pour des distributions personnalisées...
(Et d'ailleurs même pas sûr que ce soit possible sur Nspire, même, en fait...)

Donc je suppose qu'il faudra se taper de (longs?) calculs à la main ^^

Re: Tirer un nombre aléatoire dans une loi quelquonque

Message non luPosté: 03 Aoû 2017, 15:46
de Persalteas
Du coup, je me suis débrouillé avec un échantillonnage Monte Carlo. C'est une méthode discrète, mais ça a le mérite de fonctionner.
J'imagine que toi, tu connais, mais j'explique quand meme pour la postérité de ce topic:

Cette algorithme permet de tirer au hasard un élément d'une liste de taille N, alors que tous les éléments de la liste n'ont pas la meme proba d'etre tirés.

Données de départ:
  • intervalle
    $mathjax$[a,b]$mathjax$
    dans lequel tirer les valeurs, ou une liste de taille N contenant des élements (non numériques) à tirer
  • une liste p de taille N qui donne une estimation de la probabilité de N valeurs connues dans l'intervalle [a,b], ou pour les éléments de la liste
mc.png


  • Prendre un rectangle de longueur b-a et de hauteur au moins max(p)
  • Prendre des points dans ce rectangle, dont les abscisses correspondent aux valeurs de l'intervalle dont vous connaissez la proba, et régulièrement espacés sur l'axe Y,
  • Pour chaque point, vérifier si vous etes au dessus ou en dessous de la courbe,
  • Faire une liste avec tous les points qui sont en dessous (ou pile dessus)
  • En tirer un au sort dans la liste
  • Regarder son abscisse: c'est votre valeur tirée au sort dans [a,b].

Les puristes me diront que je mélange une loi de proba discrète et une continue (la probabilité d'une valeur précise dans une loi continue est censée etre nulle). En effet mon tableau p devrait plutot se définir comme une liste de points présents sur la fonction de densité de probabilité :P

Re: Tirer un nombre aléatoire dans une loi quelquonque

Message non luPosté: 03 Aoû 2017, 17:11
de Adriweb
Ok. Tu devrais publier ton programme, ou au moins la partie qui gère ça :)