RND functie fout

Status
Niet open voor verdere reacties.

WILLIAMXXX

Terugkerende gebruiker
Lid geworden
29 nov 2006
Berichten
1.246
Heej

Nou krijg ik opeens een fout met rnd functie...
Kijk mijn code:

Code:
  Public Sub stijging()
        If Label26.Text = 15 Then
            Dim a As Integer
            For a = 0 To 100
            Next
            ProgressBar1.Value = Rnd() * a
            ProgressBar2.Value = Rnd() * a
            ProgressBar3.Value = Rnd() * a
            ProgressBar4.Value = Rnd() * a
            alles()
        End If

Als ik dit zo zou zien dacht ik toch echt dat het random getal tussen de 0 en de 100 moet liggen het kan dus ook 0 en 100 zijn maar niet hoger...

Blijkbaar toch wel hoger:

Zie plaatjes...

Hij heeft het getal 101 gekozen heb dat nu al vaker mee gemaakt...
 

Bijlagen

  • hudchsfiusegiuwehfjsguhug.jpg
    hudchsfiusegiuwehfjsguhug.jpg
    99,3 KB · Weergaven: 44
Wat je doet is in dit stuk:
For a = 0 To 100
Next
een tellertje verhogen, maar verder gebeurt er helemaal niets. Dat stopt zodra a de waarde 101 heeft bereikt, dus na deze for .. next lus is a inderdaad 101 geworden.

Had het niet zo moeten zijn dat alle rnd()*a acties tussen die for .. next lus voor moeten komen:

For a = 0 To 100
ProgressBar1.Value = Rnd() * a
ProgressBar2.Value = Rnd() * a
ProgressBar3.Value = Rnd() * a
ProgressBar4.Value = Rnd() * a
alles()
Next

Dus de Next pas nadat de waarde van a is gebruikt bij de bepaling van ProgressBar1.Value etc.???

Kortom, je maakt een programmeringsfout, lijkt me...

Tijs.
 
En het lijkt mij toch evht niet:evil:

Als het daar neer zet duurrt het jaren voor dat die een random value heeft nu gaat het tenmisnte snel... dus...

Wat heb je da nog te vertellen?
 
Ik weet niet welke toon je hier aanslaat, maar mij bevalt het niet in ieder geval.

Mijn uitleg is duidelijk: in jouw code staat A altijd op 101 na de for..next lus, dus worden alle waarden daarna gebaseerd op rnd()*101

Tijs.
 
Sorry, hoor het getal moet toch echt tussen de 1 en de 100 liggen...
 
Misschien zou het handig zijn om aan te geven wat de bedoeling is van je code?

Ik zie het woord ProgressBar staan, hetgeen lijkt op weergave van de voortgang van iets?

Indien ja, dan lijkt het me vreemd dat je de mate van voortgang een mate van 'willekeurigheid' wilt geven met rnd().
Lijkt mij dat dat de mate van voortgang afhankelijk is van hoever het in werkelijkheid is.

Laat ik verder niet op de zaken vooruitlopen, we horen wel wat je met het stukje code precies wil bereiken.

Groeten,

Tijs.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan