Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !

L

Lust

Guest
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…