Randomize

Messages postés
12
Date d'inscription
vendredi 3 septembre 2004
Statut
Membre
Dernière intervention
25 novembre 2007
-
Messages postés
56
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
29 août 2010
-
Bonjour a tous,



J’ai crée une petite application pour choisir au hasard 7 chiffres sur un total de 100.



L’application, fonctionne très bien mais je n’arrive pas a faire en sorte que le système ne choisisse qu’une seule fois le nombre.



Par exemple : sur les 100 nombres, j’obtiens 7, 36, 30, 85, 41, 19, 36, et je voudrais obtenir 7 nombres différents.



Mon code est le suivant :





Private



Sub
Button1_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button1.Click



Randomize()



Me
.TextBox1.Text =

CInt
(Int((100 * Rnd()) + 1))




Me
.TextBox2.Text =

CInt
(Int((100 * Rnd()) + 1))




Me
.TextBox3.Text =

CInt
(Int((100 * Rnd()) + 1))




Me
.TextBox4.Text =

CInt
(Int((100 * Rnd()) + 1))




Me
.TextBox5.Text =

CInt
(Int((100 * Rnd()) + 1))




Me
.TextBox6.Text =

CInt
(Int((100 * Rnd()) + 1))




Me
.TextBox7.Text =

CInt
(Int((100 * Rnd()) + 1))




End



Sub






Si quelqu'un peut m’aider, se serrait gentil.





Merci.

3 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Salut,

Il serait peut-être intéressant d'utiliser un tableau, je m'explique :

Tu tires un premier nombre que tu insères dans ton tableau, tu tires ton deuxième nombre que tu va comparer avec le premier, si identique, tu retire un nouveau, si pas identique tu l'insères dans ton tableau..Tu tires ton troisième nombre que tu va comparer au deux premier, si identique à l'un ou à l'autre, tu en retires un, sinon tu l'insères dans ton tableau...ainsi dessuite jusqu'au septième...Enfin une idée comme une autre, mais il se peut qu'il y est plus court que ce que je viens de dire...

Regarde ce lien sur les tableaux en .net

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Ben...

mets donc tes nombres possibles dans un tableau (ou mieux encore : dans une lisbox)

A chaque tirage : tire aleatoirement un index du tableau (ou mieux; de la lisbox) , retiens le nombre (article) correspondant et élimine l'article correspondant à cet index.

Il est certain que de cette façon, tu ne risqueras pas de tirer 2 fois le même nombre !
Messages postés
56
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
29 août 2010
1
private void Form1_Load(object sender, EventArgs e)
        {
            Random Rdm = new Random();
            Byte?[] nTbl = new Byte?[7];
            Byte iCtn = 0;
            while (nTbl[6] == null)
            {
                bool isInside = false;
                Byte? alByte = (Byte)Rdm.Next(0, 100);                foreach (Byte? i in nTbl) if (i alByte) isInside true;
                if (!isInside) { nTbl[iCtn] = alByte; iCtn++; }
            }
            textBox1.Text = nTbl[0].ToString();
            textBox2.Text = nTbl[1].ToString();
            textBox3.Text = nTbl[2].ToString();
            textBox4.Text = nTbl[3].ToString();
            textBox5.Text = nTbl[4].ToString();
            textBox6.Text = nTbl[5].ToString();
            textBox7.Text = nTbl[6].ToString();
        }

Vers VB.Net (reflector powa, la flemme de traduire) :
PrivateSubForm1_Load(ByValsender As Object, ByVale As EventArgs)
DimRdm As NewRandom
DimnTblAsByte" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Nullable%3C%3E">?() = NewByte" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Nullable%3C%3E">?(7 - 1) {}
DimiCtnAsByte = 0
Do WhileNotnTbl(6)..HasValue As Boolean" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Nullable%3CByte%3E/property:HasValue:Boolean">HasValue
DimisInsideAsBoolean = False
DimalByte As NewByte..ctor(ByVal Byte)" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Nullable%3C%3E">?(CByte(Rdm.Next(0, 100)))
DimiAsByte" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Nullable%3C%3E">?
For EachiInnTbl
If (i = alByte) Then
isInside = True
End If
Next
IfNotisInsideThen
nTbl(iCtn) = alByte
iCtn = CByte((iCtn + 1))
End If
Loop
Me.textBox1.Text = nTbl(0).ToString
Me.textBox2.Text = nTbl(1).ToString
Me.textBox3.Text = nTbl(2).ToString
Me.textBox4.Text = nTbl(3).ToString
Me.textBox5.Text = nTbl(4).ToString
Me.textBox6.Text = nTbl(5).ToString
Me.textBox7.Text = nTbl(6).ToString
End Sub




We can't solve problems by using the same kind of thinking we used when we created them.