Nombre aléatoire entre -16 et 82

Steven Daniel -  
luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'aimerai avoir la syntaxe pour générer des nombre aléatoire compris entre -16 et 82
comment faire

3 réponses

  1. Steven Daniel
     
    générer un entre -10 et 10,
    Sub rando() 'nom de ma procedure
    Dim r As Double, r2 As Double
    ' je génere d'abord une valeur que j'arrondi( resultat : 0 ou 1)
    r2 = Round(Rnd())
    en fonction de r2, je me branche sur l'une des plages
    If (r2 = 0) Then
    r = (-10 * Rnd) ' nombre entre -10 et 0
    Else
    r = (10 * Rnd) ' nombre entre 0 et 10
    End If
    ' Je fait une troncature sur r
    r2 = Left(r, 8)
    MsgBox "tronquée est " & r2 & " r = " & r
    End Sub
    0
    1. luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   1 177
       
      J'aurais donc fait :
      Sub rando() 'nom de ma procedure
      Dim r As Double
      ' je génère d'abord une valeur que j'arrondis( résultat : entre 0 et 100, décimaux compris)
      r = Round(Rnd() * 100)
      'A ce stade, r2 ne contient que des nombres entiers de 0 à 100 
      ' (et encore, c'est à voir... Peut-être que 0 et/ou 100 ne sont pas compris.)
      If (r >= 99) 
      Then r = r - 2
      End If
      r = r - 16
      MsgBox "tronquée est " & r
      End Sub

      A voir si ça marche...

      P.S. : n'oublie jamais les balises de code...
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous

    Pour créer un entier aléatoire de min à max compris
    a=min + Int((max - min + 1) * Rnd)

    Cdlmnt
    0
    1. luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   1 177
       
      Ca dépend du langage... en Basic, c'est Int(((Max+1) - (Min+1))*Rand()) + (Min-1) ;-)
      Le tout dépend de la façon dont est gérée la valeur entière d'un aléat par l'interpréteur...
      0
  3. luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   1 177
     
    Bonjour !

    Je ne sais pas, je ne connais pas le VBA. Mais vous pouvez décomposer le traitement ^^

    1.
    Générer un nombre aléatoire entre 0 et 100
    2.
    Retirer 2 (on a donc un nombre entre -2 et 98)
    Recommencer si nombre négatif (on a un nombre entre 0 et 98)
    2 bis.
    Si nombre supérieur ou égal à 99, retirer 2 ou recommencer la génération
    3.
    Retirer 16 (on a donc un nombre entre -16 et 82)

    Il y a sûrement plus propre ;-)

    Bonne journée !

    Luc

    Les 3 plus grands mensonges du dev : 1. La doc ? On la fera plus tard... 2. Le programme a été testé et ne comporte aucun bug... 3. Les spécifications techniques sont finies...
    -1