Fonction Random à additionner..Aide!!

Résolu
Drizztdourden666 Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 31 mars 2010 - 31 mars 2010 à 07:00
Drizztdourden666 Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre 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!

7 réponses

ricky84 Messages postés 44 Date d'inscription dimanche 8 septembre 2002 Statut Membre Dernière intervention 13 janvier 2014
31 mars 2010 à 07:46
dim x as integer
For x=1 to NB_fois
----ICI TON CODE----
Next
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mars 2010 à 07:44
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
0
Drizztdourden666 Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 31 mars 2010
31 mars 2010 à 07:47
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
0
Drizztdourden666 Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 31 mars 2010
31 mars 2010 à 07:50

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Drizztdourden666 Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 31 mars 2010
31 mars 2010 à 10:12
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mars 2010 à 10:17
tentes en placant ton new Random dans ta boucle


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Drizztdourden666 Messages postés 5 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 31 mars 2010
31 mars 2010 à 18:53
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
0
Rejoignez-nous