Random in Visual basic

Status
Niet open voor verdere reacties.

Kipje1998

Nieuwe gebruiker
Lid geworden
14 nov 2015
Berichten
4
Hallo allemaal,

Voor school moet ik een taak maken met visual basic maar ik zit een beetje vast.
Ik zou in een label een random moeten laten zien dat gekozen werd uit een array.

Ik heb al verschillende dingen geprobeerd en ik geraak er niet uit. :(

Kunnen jullie mij helpen? :D

Alvast bedankt !! :thumb:
 
Het kan natuurlijk voorgekauwd worden maar ik denk dat je beter kan laten zien wat je al hebt geprobeert zodat kan worden aangegeven waar je de mist in gaat.
 
Public Class Form1
Dim arrLatijn(1, 4) As String
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

arrLatijn(0, 0) = "periculum"
arrLatijn(0, 1) = "amicitia"
arrLatijn(0, 2) = "olla"
arrLatijn(0, 3) = "amor"
arrLatijn(0, 4) = "virtus"

arrLatijn(1, 0) = "gevaar"
arrLatijn(1, 1) = "vriendschap"
arrLatijn(1, 2) = "pot"
arrLatijn(1, 3) = "liefde"
arrLatijn(1, 4) = "moed"

End Sub

Private Sub btnStart_Click(sender As System.Object, e As System.EventArgs) Handles btnStart.Click

Dim WelkWoord As Random
Dim woord As String

woord = WelkWoord.Next(arrLatijn.GetUpperBound(0))

lblOpgave.Text = woord


End Sub
 
Je hebt een array met meerdere dimensies en daar hou je in je code geen rekening mee. Je UpperBound geeft wel het juiste getal terug voor de hele array (10), maar dat is niet het juiste getal om een woord uit 1 van de dimensies te selecteren. De Random functie gaat uit van een maximum van 10 terwijl de maximale dimensie index 5 is.
 
Laatst bewerkt:
Je kan de juiste index uit de juiste dimensie bepalen door het getal van de UpperBound te verminderen met het aantal elementen per dimensie. De juiste dimensie kan je bepalen door het random gegenereerde getal te controleren op zijn waarde. Dezelfde vraag krijg ik dan waarschijnlijk in een iets andere vorm weer terug ;)

Kijk eens naar deze code voor je button:
Code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Rand As New Random()
    Dim Index As Byte = Rand.Next(arrLatijn.Length - 1)
    Dim IndDM As Byte = IIf(Index < 5, 0, 1)

    lblOpgave.Text = arrLatijn(IndDM, Index - IndDM * 5)
End Sub

Als je meer dan de huidige 2 dimensies ( 0 en 1) gaat gebruiken zal je de regel voor het bepalen van de waarde voor IndDM er op moeten aanpassen. Het nummer 5 is het aantal elementen per dimensie (0 t/m 4)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan