Partage
  • Partager sur Facebook
  • Partager sur Twitter

Générer aléatoirement en évitant des gaussiennes

densité probabilité random python aléatoire gauss gaussienne

Sujet résolu
    21 janvier 2015 à 19:15:46

    Bonjour,

    Un de mes algorithmes essaie différentes valeurs flottantes entre x et y. Il s'arrête dès qu'une valeur tirée au sort est acceptée, sachant que l'on a aucun a priori sur les valeurs en question, on les choisit donc aléatoirement. S'il échoue avec une valeur tirée au sort, il faut essayer une autre valeur dans cet intervalle, en diminuant la probabilité des valeurs environnantes (par exemple selon une gaussienne).

    Ainsi j'obtiens une densité à trous, par exemple si j'ai déjà testé les valeurs z et t sans succès :

    densité

    Il y a-t-il une fonction simple de scipy ou autre pour tirer au sort de cette manière ?

    L'idéal serait une fonction du genre 

    rand(x, y, [[moyenne1, variance1], [moyenne2, variance2], ...])

    qui renvoie un flottant antre x et y en évitant les gaussiennes fournies en paramètre par exemple.

    Je précise que je voudrais éviter de discrétiser mon intervalle [x, y] et que je suis pas un spécialiste des probas, je cherche juste comment tirer au sort mes valeurs de manière efficace ^^

    Merci

    -
    Edité par courrier 21 janvier 2015 à 19:16:23

    • Partager sur Facebook
    • Partager sur Twitter
      22 janvier 2015 à 8:55:15

      Salut,

      Je pense que c'est impossible avec SciPy. Mais tu peux d'inspirer de cet ancien message : le tirage est uniforme sur plusieurs intervalles. A toi de l'adapter avec des gaussiennes.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 janvier 2015 à 14:51:54

        Salut,

        Je précise que je voudrais éviter de discrétiser mon intervalle [x, y]

        Dans ce cas là, laisse tomber les ordi. Le calcul continu, c'est pas vraiment leur fort.

        • Partager sur Facebook
        • Partager sur Twitter
          22 janvier 2015 à 15:05:07

          Je ne sais pas si ça peut répondre à ton besoin mais tu peux éliminer des valeurs comprises entre des intervalles en utilisant random.choice().

          nombres = range(a,b) + range(c,d)
          x = random.choice(nombres)
          



          • Partager sur Facebook
          • Partager sur Twitter
            23 janvier 2015 à 13:42:05

            Merci pour vos suggestions, mais j'ai fini par remplacer le tirage aléatoire par un parcours avec un pas qui diminue, du style, pour a=0 et b= 100 : 0, 100, 50, 25, 75, 12.5, 37.5, 62.5, 87.5, ....

            J'ai donc contourné le problème mais c'est satisfaisant pour mon utilisation.

            • Partager sur Facebook
            • Partager sur Twitter

            Générer aléatoirement en évitant des gaussiennes

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown