Générer des nombres aléatoires qui se suivent

  • Initiateur de la discussion Initiateur de la discussion Lust
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lust

XLDnaute Nouveau
Bonjour à tous,

Mon problème est le suivant : je cherche à générer une suite de nombres aléatoires qui se suivent (ne pas faire un bond de 0 à 100 mais que cela se fasse de manière progressive) dont leur moyenne est égale à un nombre prédéfini.
Son application servirait à obtenir un profil quelconque de vent (toute les 1/2-heures par exemple sur 1 an) dont je connais la moyenne mensuelle (par exemple 3 m/s). Les valeurs doivent donc être > 0 m/s et < 25-30 m/s (pour rester réaliste).
J'ai essayé avec LOI.NORMALE.INVERSE() mais l'apparition de nombres négatifs et/ou de 2 nombres consécutifs très éloignés pose problème dans le réalisme attendu... J'ai également tenté avec les fonctions ALEA() et ALEA.ENTRE.BORNES() où j'arrive à obtenir une variation progressive mais pas à considérer la moyenne.
Je pense qu'un codage en VBA peut résoudre cela mais je suis novice en VBA 😉

Merci d'avance!

Lust
 
Re : Générer des nombres aléatoires qui se suivent

Bonjour,

J'ai retravaillé le sujet et je pense avoir réussi à obtenir ce que je voulais (faire un décalage de 4 colonnes entre 2 itérations + conservation des formules 😎 ). Pour les intéressés 😉 :

Code:
Sub profil_vent()
Dim Tabvent As Variant, cmpt1 As Long, cmpt2 As Integer

ecart=1000

Tabvent = Range(ActiveCell, ActiveCell.Offset(ecart, 41)).Formula

For i = 1 To 10
    moy = Sheets("Vitesse vent").Range("B" & i + 1).Value
    cmpt2 = (4 * i) 
    For cmpt1 = LBound(Tabvent, 1) To UBound(Tabvent, 1)
        Tabvent(cmpt1, cmpt2) = DistrQsN(Rnd, moy, 1.2)
        If Tabvent(cmpt1, cmpt2) < 0 Then
            Tabvent(cmpt1, cmpt2) = 0
        End If
    Next cmpt1
Next i

Range(ActiveCell, ActiveCell.Offset(ecart, 41)).Formula = Tabvent
End Sub

Un grand merci à vous Dranreb pour le temps consacré et votre fonction "DistrQsN" 😀

Lust
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour