Gå til innhold

Anbefalte innlegg

Hvordan kan man få ut et random tall mellom feks 0 og 10, uten så mye kode?

 

Det jeg bruker nå er en tekstboks og en timer som teller fra 0 til 10 og om igjen.

Også trykker jeg på en knapp så tar den det tallet som er i tekstboksen akkurat da. En veldig tung måte å få et random tall på :p

Lenke til kommentar
Videoannonse
Annonse

Du bruker Rnd()-funksjonen, som returnerer en verdi mellom 0 og 1.

 

Først lager du et nytt "seed":

Randomize Timer

Så kan du hente ut et tall:

Dim sTall As Long
sTall = Rnd * 10

 

Edit: Long er en datatype som ikke støtter desimaltall. Den kan brukes til mye, bla. ta bort desimaltall som du gjør her.

Endret av Jonas
Lenke til kommentar

Dersom du eksempelvis ønsker å finne et tilfeldig tall innenfor et visst område, kan du også bruke følgende funksjon:

 

Public Function RandomNumber(lngBegin As Double, lngEnd As Double) As Double

  Randomize
  RandomNumber = lngBegin + (Rnd * (abs(lngEnd - lngbegin) - 1))

End Function

 

For å finne et tilfeldig tall mellom 50 og 100, gjør følgende:

 

MsgBox RandomNumber(50, 100)

 

Et tilfeldig tall mellom 0 og 10 kan finnes ut likeledes:

 

MsgBox RandomNumber(0, 10)

 

For å returnere kun helttall, kan du benytte funksjonene Int, Fix eller CLng:

 

MsgBox "Gir kun heltall uten avrunding: " & Int(RandomNumber(50, 100))
MsgBox "Gir kun heltall uten avrunding: " & Fix(RandomNumber(50, 100))
MsgBox "Gir heltall med avrunding: " & CLng(RandomNumber(50, 100))

Endret av aadnk
Lenke til kommentar
....

Public Function RandomNumber(lngBegin As Double, lngEnd As Double) As Double

   Randomize
   RandomNumber = lngBegin + (Rnd * (lngEnd - 1))

End Function

....

For å finne et tilfeldig tall mellom 50 og 100, gjør følgende:

 

MsgBox RandomNumber(50, 100)

.....

feil, denne vil returnere et tall mellom 50 - 150

 

du må gange Rnd() med absolutt verdien av differansen mellom lngBegin og lngEnd hvis du vil at den skal funke som du mener.

 

som dette :

Public Function RandomNumber(lngBegin As Double, lngEnd As Double) As Double

   Randomize
   RandomNumber = lngBegin + (Rnd * (abs(lngEnd - lngbegin) - 1))

End Function

 

aadnk : vi bør fortsette med evovEd-editoren snart.. ;)

Lenke til kommentar
du må gange Rnd() med absolutt verdien av differansen mellom lngBegin og lngEnd hvis du vil at den skal funke som du mener.

 

Oisann, der gikk det litt fort i svingene. :blush:

 

Du har selvsagt rett, det er differansen som skal benyttes.

 

aadnk : vi bør fortsette med evovEd-editoren snart..  ;)

 

Jepp, det er nokså lenge siden sist. Kanske jeg kan ta kontakt med deg senere i dag.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...