Gå til innhold

Anbefalte innlegg

Skrevet

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

Videoannonse
Annonse
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet
....

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.. ;)

Skrevet
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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...