Nombre pseudo-aléatoire fonction "random"

Bubu -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je dois créer une fonction d'argument (x,a,N) renvoyant une liste N de nombres pseudo-aléatoires distribués uniformément autour de x sur un intervalle a.

J'ai déjà écrit ça:

def serie_mesures(x,a,N):
    M=[]
    for i in range(0,N):
        p=random.random()
        M.append(p)
    return(M)


Mais je ne vois pas comment faire intervenir x et a dans mon programme.

Configuration: Windows / Chrome 86.0.4240.193

4 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour Bubu,

    Déjà, sans parler de code Python, sais-tu comment faire sur le papier ?

    Est-ce que tu vois bien ce que signifie ceci :

    distribués uniformément autour de x sur un intervalle a

    Et as-tu testé ton code tel qu'il est ?
    0
    1. Bubu
       
      Pour la signification de la phrase, j'e l'ai comprise comme cela: "Les nombres doivent être compris dans l'intervalle [x-a,x+a] "

      Et oui, j'ai testé mon code, il marche c'est-à-dire qu'il affiche une liste de N valeurs aléatoires entre 0 et 1 mais il ne prend pas en compte x et a.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Bubu
         
        bonjour,
        ne connais-tu pas une fonction ayant pour origine l'intervalle entre 0 et 1 et pour destination l'intervalle [x-a,x+a]?
        0
      2. Bubu > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        non je ne sais pas
        0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Ben oui, ça c'est sur, il faut que tu écrive le code pour cela ...

    Une précision: faut-il des nombres entiers ou décimaux comme tu le fais actuellement ?

    Tu as compris que x doit être la valeur centrale de ta série de nombres

    Donc il faut faire 2 boucles for:

    une qui génère une série de N/2 nombres jusqu'à x et une autre qui génère de x à N/2 nombres

    Regarde bien les différentes méthodes de la bibliothèque random sur Internet,

    il y en a pour faire ça (il n'y a pas que random.random() )
    0
  3. Bubu
     
    Il faut des nombres décimaux

    Et j'ai regardé sur internet, ils proposent la fonction "random.uniform"
    qui retourne un nombre à virgules dans l'intervalle compris entre a et b

    Je vais donc utiliser :
    random.uniform(x-a,x+a)

    Mais une seule boucle "for" suffit dans ce cas-là non? De 0 à N?
    0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    ben oui ...
    0