Randomize

Le_Martien Messages postés 12 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 25 novembre 2007 - 25 nov. 2007 à 19:07
Elxior Messages postés 56 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 29 août 2010 - 25 nov. 2007 à 20:36
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

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
25 nov. 2007 à 19:41
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

 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 nov. 2007 à 19:52
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 !
0
Elxior Messages postés 56 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 29 août 2010 1
25 nov. 2007 à 20:36
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.
0
Rejoignez-nous