login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Visual Basic] Random getal kiezen (Opgelost)

Offline AgentX - 18/11/2008 21:25
Avatar van AgentXHTML beginner Hallo luitjes,

Ik zit hier een Yahtzee spelletje te maken in Visual Basic.
Bij dit spel is het de bedoeling om vijf keer willekeurig een getal te kiezen voor de vijf dobbelstenen.

Hoe doe ik dit?
  1. Int(Rnd() * 5 + 1)

Zo krijg ik 1, 2, 3, 4, 5 of 6.
En dat voer ik dan vijf keer achter elkaar uit.

Maar wat doet dat programma? Hij kiest steeds dezelfde getallen!

  1. Achtereenvolgend:
  2.  
  3. Eerste reeks: 41454
  4. Tweede reeks: 55152
  5. Derde reeks: 24422
  6. Vierde reeks: 24523
  7. Vijfde reeks: 11421
  8. Zesde reeks: 32114


En dat doet ie nou elke keer als ik het programma herstart begint hij weer bij 41454... Hoe kan dit en is hier een oplossing voor?

Niet zo leuk als je al weet welke getallen er komen in je spelletje...

Bedankt alvast!

9 antwoorden

Gesponsorde links
Offline Abbas - 19/11/2008 01:59
Avatar van Abbas Gouden medaille

Crew .NET
Ik heb ook al Yahtzee gemaakt in C# en ben dit probleem nooit tegengekomen. Ik heb net een testje gemaakt met deze code en ook hier kom ik nooit dezelfde reeks tegen:

  1. 'Nieuwe random maken
  2. Dim randInt As New Random()
  3. 'Integer voor de Loop
  4. Dim i As Integer
  5. 'String om resultaat in weg te schrijven
  6. Dim reeks As String = ""
  7.  
  8. 'Loopen om vijf getallen te "maken"
  9. For i = 1 To 5 Step 1
  10. 'Telkes de Next van de reeks nemen
  11. '1 wordt meegeteld, 7 niet meer
  12. 'Random kiest dus van 1 tem 6
  13. reeks &= randInt.Next(1, 7).ToString() & " "
  14. Next
  15.  
  16. 'Resultaat weergeven
  17. MessageBox.Show(reeks)


Offline Wim - 19/11/2008 02:00
Avatar van Wim Crew algemeen Je kan ook gebruik maken van het Random-object op deze manier:
  1. Dim objRandom as new Random
  2. dim getal as integer
  3. getal = objRandom.Next(1,5)
Offline Abbas - 19/11/2008 02:03
Avatar van Abbas Gouden medaille

Crew .NET
@wimmarien: jouw code is niet juist! 

- Haakjes achter Random, VS zet die er wel zelf bij normaal maar kom.. 
- .Next, moet (1, 7) zijn : zie m'n vorige post! 
Offline Ontani - 19/11/2008 08:37 (laatste wijziging 19/11/2008 08:39)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Het probleem is dat Rnd() altijd dezelfde waardes terug geeft nadat een applicatie start.

Je kan dit simpel weg voorkomen door net voor je Rnd() gebruikt Randomize() aan te roepen.

  1. Randomize()
  2. Debug.WriteLine(Math.Round(Rnd() * 5 + 1))
Offline Wim - 19/11/2008 15:35 (laatste wijziging 19/11/2008 15:43)
Avatar van Wim Crew algemeen
titjes schreef:
@wimmarien: jouw code is niet juist! 

- Haakjes achter Random, VS zet die er wel zelf bij normaal maar kom.. 
- .Next, moet (1, 7) zijn : zie m'n vorige post! 


mja maar visual studio werkt nog steeds niet onder linux -> gewoon getypt... En die getallen komen uit zijn code, verder niet bij nagedacht oid

Ben er trouwens 99% zeker van dat haakjes achter Random NIET moeten

//edit:
vlug even op flaptop getest: Haakjes worden door VS niet toegevoegd en zijn ook helemaal niet verplicht titjes.... Buiten dat de bovengrens foutief is werkt het dus perfect
Offline AgentX - 19/11/2008 16:35
Avatar van AgentX HTML beginner
Ontani schreef:
Het probleem is dat Rnd() altijd dezelfde waardes terug geeft nadat een applicatie start.

Je kan dit simpel weg voorkomen door net voor je Rnd() gebruikt Randomize() aan te roepen.

[..code..]


Kijk! Dé oplossing! Bedankt! 
Offline Abbas - 22/11/2008 20:17
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
Buiten dat de bovengrens foutief is werkt het dus perfect
Neen, de bovengrens die ik gebruik is WEL juist. Kijk maar naar de uitleg bij de tweede paramter:
Visual Studio schreef:
The exclusive upper bound of the random number returned.
 
Offline AgentX - 23/11/2008 13:25
Avatar van AgentX HTML beginner Hmm.. naja daar word ik niet wijzer van eigenlijk...
Offline Wim - 23/11/2008 14:58
Avatar van Wim Crew algemeen
titjes schreef:
[..quote..] 


had het dan ook over de bovengrens in de code die IK gaf :/
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s