Fonction Random à additionner..Aide!! [Résolu]

Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Dernière intervention
31 mars 2010
- - Dernière réponse : Drizztdourden666
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Dernière intervention
31 mars 2010
- 31 mars 2010 à 18:53
Bonjour,

J'ai programmer un Lanceur de dés avec des fonction random. Le calcul a faire est le suivant:

NB_fois -> D_X * PROD = Result_

NB_fois = nombre de fois que je veut lancer le dés
D_X = D à X faces
PROD = Multiplicateur du resultat du dés
Result = Pas besoin de faire un dessin :P

Voila le code pour un dés a 20 face:

    
Private Sub BTN_D20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_D20.Click

        Dim MinNumber As Integer = 1
        Dim MaxNumber As Integer = 20
        Dim r As New Random(System.DateTime.Now.Millisecond)

        RESULT_D20.Text = PROD_D20.Text * (r.Next(MinNumber, (MaxNumber + 1)))

End Sub


Tout marche très bien mais je ne comprend pas comment je pourrait programmer le tout pour que ca me lance plusieur fois le dés en question... Dans ce cas ci, la variable NB_fois.

Merci d'avance!
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
46
Date d'inscription
dimanche 8 septembre 2002
Dernière intervention
13 janvier 2014
3
Merci
dim x as integer
For x=1 to NB_fois
----ICI TON CODE----
Next

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ricky84
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
60
0
Merci
j'aime pas trop voir des Textbox dans une ligne de calcul (PROD_D20)

RESULT_D20.Text = PROD_D20.Text * (r.Next(MinNumber, (MaxNumber + 1)))


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Dernière intervention
31 mars 2010
0
Merci
Ca ne change pas grand chose sinon les risque de bug mais je vais ameliorer le code apres avoir tout codé... Ca ne repond pas a ma question. :P
Commenter la réponse de Drizztdourden666
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Dernière intervention
31 mars 2010
0
Merci

dim x as integer
For x=1 to NB_fois
----ICI TON CODE----
Next


Merci, Ca fait un bout que je n'ai pas programmer alors je suis pas mal rouillé... Alors j'avais oublier la fonction For, ce qui n'est pas tellement a mon avantage...!!! Merci encore
Commenter la réponse de Drizztdourden666
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Dernière intervention
31 mars 2010
0
Merci
Est ce que quelqu'un aurait une solution a ce probleme ci... Le sub retourne bien un chiffre au hasard sauf que dans ce cas ci, les nombre qui en resulte sont toujours dans la meme moyenne quand NB_fois est plus grand que 1. On dirait que mon random ne fonctionne pas corectement et qu'il n'a pas le temps de genéré ses nombre assez rapidement et qu'il reprend toujours des nombres qui se resemble(EX: 15-14-17-16-16-14-15...). Moi je voudrait que ce soit totalement du hasard(EX: 1-6-2-19-2-14-17-6-3-20-1-11...)

J'ai essayer de mettre un update() dans le For et j'ai aussi essayer system.threading.thread.sleep(XXXX) sans resultat concluant.

Merci
Private Sub BTN_D20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_D20.Click

        BTN_D20.Enabled = False
        RESULT_D20.Text = ""
        STATUTBAR_LBL_now.Text = "Calcul en cours..."
        Update()
        STATUTBAR_PROGRESS.Minimum = 0
        STATUTBAR_PROGRESS.Maximum = 100
        STATUTBAR_PROGRESS.Value = 0

        If IsNumeric(PROD_D20.Text) And IsNumeric(NB_D20.Text) Then

            Dim Produit_ As Integer = PROD_D20.Text()
            Dim Result_ As Integer = 0
            Dim NB_fois As Integer = NB_D20.Text()
            Dim X As Integer
            Dim MinNumber As Integer = 1
            Dim MaxNumber As Integer = 20
            Dim Progress_add As Double
            Dim r As New Random(System.DateTime.Now.Millisecond)

            Progress_add = 100 / NB_fois

            For X = 1 To NB_fois
                Dim Part_result As Integer = 0
                Part_result = (r.Next(MinNumber, (MaxNumber + 1)))
                Result_ += Part_result
                If X < NB_fois Then
                    STATUTBAR_PROGRESS.Value += Progress_add
                End If
            Next

            STATUTBAR_PROGRESS.Value = 100
            RESULT_D20.Text = Produit_ * Result_
            BTN_D20.Enabled = True
            STATUTBAR_PROGRESS.Value = 0
            STATUTBAR_LBL_now.Text = "En Attente..."

        Else
            MessageBox.Show("Erreur!" + Chr(13) + Chr(13) + "Le nombre de dés et le multiplicateur doivent etre des entiers numeriques", "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
            PROD_D20.Text = 1
            NB_D20.Text = 1
            BTN_D20.Enabled = True
        End If
    End Sub
Commenter la réponse de Drizztdourden666
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
60
0
Merci
tentes en placant ton new Random dans ta boucle


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Dernière intervention
31 mars 2010
0
Merci
Il etait comme ca au debut avant que je le change. ca ne change rien... malheureusement. D'autre idée?

merci quand meme.

            For X = 1 To NB_fois
                Dim Part_result As Integer = 0
                Dim r As New Random(System.DateTime.Now.Millisecond)
                Part_result = (r.Next(MinNumber, (MaxNumber + 1)))
                Result_ += Part_result
                If X < NB_fois Then
                    STATUTBAR_PROGRESS.Value += Progress_add
                End If
            Next
Commenter la réponse de Drizztdourden666

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.