IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

un nombre pair en random?


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Par défaut un nombre pair en random?
    VB 2005 Express

    Comment faire pour sortir un uniquement un nombre pair avec un random ?

    posYgauche = CInt(Int((80 - 44 + 1) * Rnd() + 1))

    En fait, j'ai besoin de multiple de 4 !

    44, 48, 92, ...etc

    Merci à l'avance,

    A+

  2. #2
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Si tu veux avoir que des nombres pairs, il suffit de tirer un nombre aléatoire dans une fenêtre 2 fois plus petite et multiplier le nombre tiré par 2.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Par défaut fenêtre plus petite ?
    Que voulez-vous dire par fenêtre plus petite ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 59
    Par défaut
    Essaye avec ca, j'ai pas testé mais ca pourrait t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim valeur
            If valeur = Round((valeur / 2), 0) * 2 Then 'Test si PAIR
                If Int(valeur / 2) = valeur / 2 Then 'Test si multiple de 2
                 'ici ton code si le nb est pair et multiple de 2
                End If
            End If

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Mais non pour savoir si c'est pair, il faut vérifier si ce nombre est congru à 0 [2] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Nombre as Integer = Random..... 'récupère le nombre aléatoire
      Dim NombrePair as Integer
     
    If not Nombre Mod 2 = 0 Then 'si c'est impair
      NombrePair = Nombre * 2 'on le multiplie par 2
    Else 'sinon
      NombrePair = Nombre 'c'est bon
    End If
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Par défaut
    merci, je test ca et je vous en redonne des nouvelles !

  7. #7
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Pourquoi multiplier par deux et pas juste ajouter 1 ... sinon on aurai un nombre qui pourrai être en dehors de l'intervalle souhaitée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Nombre as Integer = Random..... 'récupère le nombre aléatoire
      Dim NombrePair as Integer
     
    If not Nombre Mod 2 = 0 Then 'si c'est impair
      NombrePair = Nombre + 1
    Else 'sinon
      NombrePair = Nombre 'c'est bon
    End If
    Après, si le nombre +1 est en dehors des valeurs souhaités, on fait juste -1 à la place ...

  8. #8
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par smyley Voir le message
    Pourquoi multiplier par deux et pas juste ajouter 1 ... sinon on aurai un nombre qui pourrai être en dehors de l'intervalle souhaitée ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Nombre as Integer = Random..... 'récupère le nombre aléatoire
      Dim NombrePair as Integer
     
    If not Nombre Mod 2 = 0 Then 'si c'est impair
      NombrePair = Nombre + 1
    Else 'sinon
      NombrePair = Nombre 'c'est bon
    End If
    Après, si le nombre +1 est en dehors des valeurs souhaités, on fait juste -1 à la place ...
    Oui je suis bête

    Cependant même en rajoutant 1, on peut sortir de l'intervalle donc il faut une autre condition facile
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Par défaut le résultat du test * 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Nombre As Integer = CInt(Int((80 - 44 + 1) * Rnd() + 1)) 'récupère le nombre aléatoire        Dim NombrePair As Integer
            If Not Nombre Mod 2 = 0 Then 'si c'est impair
                NombrePair = Nombre * 2 'on le multiplie par 2
            Else 'sinon
                NombrePair = Nombre 'c'est bon        End If
            TextBox1.T
    ext = NombrePair
    End Sub
    ************************************
    cela sort des nombres pair ... super !, mais ca sort en dehors du "range" entre 44 et 80 seulement!
    *************************************
    Je vais tester avec l'autre méthode du + 1 et -1

    Je vous reviens !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Par défaut c'est pair ...mais ?
    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Nombre As Integer = CInt(Int((80 - 44 + 1) * Rnd() + 1)) 'récupère le nombre aléatoire
    Dim NombrePair As Integer
    If Not Nombre Mod 2 = 0 Then 'si c'est impair
    NombrePair = Nombre + 1
    Else 'sinon
    NombrePair = Nombre 'c'est bon
    End If
    TextBox1.Text = NombrePair
    End Sub
    *************************
    Ca sort toujours du "range" souhaité ?, mais ca sort des nombres pair aussi

    Pourquoi il ne tiens plus compte du minimum et maximum que je lui demande ?

  11. #11
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Cependant même en rajoutant 1, on peut sortir de l'intervalle donc il faut une autre condition facile
    Citation Envoyé par smyley Voir le message
    Après, si le nombre +1 est en dehors des valeurs souhaités, on fait juste -1 à la place ...
    et puis un truc du genre devrais toujours marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim Nombre as Integer = Random..... 'récupère le nombre aléatoire
      Dim NombrePair as Integer
     
    If not Nombre Mod 2 = 0 Then 'si c'est impair
    Begin //je sais pas, je voudrais juste faire le { du C#
      NombrePair = Nombre + 1
      If NombrePair > ValeurMaxDuRandom Then
        NombrePair = NombrePair - 2
    End //idem que pour le Begin
    Else 'sinon
      NombrePair = Nombre 'c'est bon
    End If

    ps. megaben tu peut utiliser les balises CODE pour donner un meilleur aspect à ton code ...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 59
    Par défaut
    C'est cette partie qui va pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Nombre As Integer = CInt(Int((80 - 44 + 1) * Rnd() + 1))
    Remplace par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Nombre As Integer = CInt(Int((80 - 44 + 1) * Rnd() + 44))

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 59
    Par défaut
    Tiens normalement ca marche j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function GetMaValeur(ByVal MultipleDe As Integer, ByVal MinVal As Integer, ByVal MaxVal As Integer) As Integer
            Dim Nombre As Integer = CInt(Int((MaxVal - MinVal + 1) * Rnd() + MinVal))
            If Nombre Mod MultipleDe = 0 Then
                TextBox1.Text = Nombre
            Else
                GetMaValeur(MultipleDe, MinVal, MaxVal)
            End If
        End Function
    Et pour ton multiple de 4 tu fait appel :


  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Par défaut
    Merci,

    je venais de trouver mon erreur sur Google

    Tout fonctionne bien

    encore merci

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 26/11/2007, 19h47
  2. Nombre pair ou bien impair
    Par monoar dans le forum Ruby
    Réponses: 10
    Dernier message: 12/08/2007, 21h21
  3. [TP] Nombres pairs et impairs
    Par The future scientist dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 04/05/2007, 17h32
  4. Nombre pair sur Matlab
    Par cricri04 dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/03/2007, 16h46
  5. XSL nombre pair de pages
    Par Urthgard dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/06/2004, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo