Gjakmarrja Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 Hei! Jeg har en tallrekke f.eks 0 til gloser.items.count sant!? Det jeg vil er at en random funsjon skal trekke ut tall innenfor den rekken, og putte det inni en annen listbox kalt randomlist. Tallene kan ikke forekomme 2 ganger, så når den finner et random tall mellom angitte verdier.. må den kryss referere med resten av tallene i randomlisten for å hindre at tallet forekommer 2 ganger.. skjønner? Dette er det jeg har laget selv: (å ikke klag på at jeg bruker Goto ) Public Sub makeran() randomlist.Items.Clear() Dim i As Integer = 0 Dim u As Integer = 0 Dim num As Integer = 0 Dim o As Integer = 0 Dim ran As New Random For i = 0 To gloser.Items.Count - 1 num = ran.Next(0, gloser.Items.Count) If randomlist.Items.Count = 0 Then randomlist.Items.Add(num) GoTo hihi End If haha: For u = 0 To randomlist.Items.Count - 1 num = ran.Next(0, gloser.Items.Count) If num = randomlist.Items.Item(u) Then GoTo haha Else o += 1 End If Next If o > 0 Then randomlist.Items.Add(num) End If hihi: Next Dim p As Integer = 0 For p = 0 To randomlist.Items.Count - 1 Debug.WriteLine(randomlist.Items.Item(p)) Next End Sub Det over funker neeeeesten... bare at samme tall forekommer flere enn en gang i listen? Forklare en gang til litt bedre... Vi har en tallrekke... 1-10 Jeg vil at de skal puttes inn i randomlist i random rekkefølge? det hva kort og enkelt hæ ? Tusen Tusen takk for hjelp Lenke til kommentar
Degeim Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 (endret) Se min neste post. Endret 13. februar 2006 av Degeim Lenke til kommentar
Gjakmarrja Skrevet 13. februar 2006 Forfatter Del Skrevet 13. februar 2006 Fikk feil når eg tok copy and paste... Dessuten så, nei eg skjønte isje det hjelp Lenke til kommentar
Degeim Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 (endret) Beklager, jeg kan ikke ha tenkt helt klart når jeg skrev den kodesnutten. Her er en som funker, så sant du har en listbox med navnet "Randomliste", og en med navnet "Gloser": Private Sub Trekk() Dim i As Integer Dim glose As String RandomListe.Items.Clear Do Until RandomListe.Items.Count = Gloser.Items.Count Randomize() glose = Gloser.Items(Int(Rnd() * Gloser.Items.Count)) For i = 0 To RandomListe.Items.Count - 1 If RandomListe.Items(i) = glose Then GoTo neste End If Next i RandomListe.Items.Add(glose) neste: Loop End Sub Endret 13. februar 2006 av Degeim Lenke til kommentar
Gjakmarrja Skrevet 13. februar 2006 Forfatter Del Skrevet 13. februar 2006 Nei... Randomlist skal bli fylt med indexene til glose listboxen bare i random rekkefølge... ? og at samme index ikke dukker opp 2 ganger i randomlist.. skjønner? Vet jeg maser... men er veldig veldig takknemmlig for hjelpen jeg får Lenke til kommentar
Degeim Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 Endre følgende linjer: Dim glose As String til Dim glose as Integer glose = Gloser.Items(Int(Rnd() * Gloser.Items.Count)) til glose = Int(Rnd() * Gloser.Items.Count) Så skal det nok virke. Lenke til kommentar
Gjakmarrja Skrevet 13. februar 2006 Forfatter Del Skrevet 13. februar 2006 Den gir samme tall ut hele tiden? Den fyller randomlisten med tallet 0? Lenke til kommentar
Degeim Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 (endret) Det gjør den ikke hos meg. Er du sikker på at du har den riktige koden? Her er den, i alle fall: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim glose As Integer RandomListe.Items.Clear() Do Until RandomListe.Items.Count = Gloser.Items.Count Randomize() glose = Int(Rnd() * Gloser.Items.Count) For i = 0 To RandomListe.Items.Count - 1 If RandomListe.Items(i) = glose Then GoTo neste End If Next i RandomListe.Items.Add(glose) neste: Loop End Sub Endret 13. februar 2006 av Degeim Lenke til kommentar
Gjakmarrja Skrevet 14. februar 2006 Forfatter Del Skrevet 14. februar 2006 Det gjør den ikke hos meg. Er du sikker på at du har den riktige koden? Her er den, i alle fall: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim glose As Integer RandomListe.Items.Clear() Do Until RandomListe.Items.Count = Gloser.Items.Count Randomize() glose = Int(Rnd() * Gloser.Items.Count) For i = 0 To RandomListe.Items.Count - 1 If RandomListe.Items(i) = glose Then GoTo neste End If Next i RandomListe.Items.Add(glose) neste: Loop End Sub 5600909[/snapback] Jeg ikke hva jeg fortudla til Men den funker no... tusen tusen tusen takk Lenke til kommentar
oyvind_b Skrevet 14. februar 2006 Del Skrevet 14. februar 2006 Svaret til degeim kan i teorien gå i uendelig løkke. Denne er bedre og kjappere (den har bare en løkke som traverseres en gang): Dim i As Integer Dim gloseIndex As Integer Dim arrayList As ArrayList RandomListe.Items.Clear() Randomize() arrayList = New ArrayList(Gloser.Items) For i = 0 To arrayList.Count - 1 gloseIndex = Int(Rnd() * arrayList.Count) RandomListe.Items.Add(arrayList(gloseIndex)) arrayList.RemoveAt(gloseIndex) Next Øyvind Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå