/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Randomkoden
Fra : Tina Hoffmann


Dato : 12-02-02 17:02

Jeg forsøger at lave et program som skal vise et vilkårligt tal mellem 3 og
18 (simulerer et terningeslag med 3 almindelige terninger). Jeg har forsøgt
med:

Dim x As Integer
Randomize
For x = 3 To 18
thevalue = Int((3 * 6 * Rnd) + 1)
Text1.Text = thevalue
Next x

Men det er muligt at slå 1 og 2 når jeg kører programmet hvilket med
virkelige terninger er umuligt. Hvordan kan man ændre i koden så det ikke er
muligt?



 
 
Mikkel Bundgaard (12-02-2002)
Kommentar
Fra : Mikkel Bundgaard


Dato : 12-02-02 17:40

"Tina Hoffmann" <tina@archmail.com> wrote in message
news:kYaa8.6900$yU3.865233975@news.orangenet.dk...
> Jeg forsøger at lave et program som skal vise et vilkårligt tal
> mellem 3 og 18 (simulerer et terningeslag med 3 almindelige
> terninger). Jeg har forsøgt med:
>
> Dim x As Integer
> Randomize
> For x = 3 To 18
> thevalue = Int((3 * 6 * Rnd) + 1)
> Text1.Text = thevalue
> Next x
>
Hej Tina

Du kan enten gøre således:
Public Function giveThreeDice() As Integer
Randomize

'Int((upperbound - lowerbound+ 1) * Rnd + lowerbound)
giveThreeDice = Int((18 - 3 + 1) * Rnd + 3)
End Function

Ovenstående funktion stemmer dog ikke overens med alm.
sandsynlighed, da funktionen har lige stor sandsynlighed for at
slå 10 som 18. Så en bedre udgave ville nok være følgende:

Public Function giveThreeDice2() As Integer
Dim intRes As Integer
Dim i As Integer

Randomize

For i = 1 To 3
intRes = intRes + Int((6 * Rnd) + 1)
Next i

giveThreeDice2 = intRes
End Function

Håber du kan bruge det til noget .
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum



Tomas Christiansen (12-02-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 12-02-02 21:37

Mikkel Bundgaard skrev:
> Public Function giveThreeDice() As Integer
> Randomize
....
> End Function

Lige en bemærkning: Man får ikke "mere" tilfældige tal af at bruge
Randomize flere gange i sit program.

Det er nok at bruge Randomize én gang.

-------
Tomas


Harald Staff (13-02-2002)
Kommentar
Fra : Harald Staff


Dato : 13-02-02 10:43

Jeg er ikke sikker på at du har rett. De fleste råd tilsier randomize før
hver enkelt brug (uten at jeg kjenner mekanismen særlig godt):

Dim x As Integer
For x = 3 To 18
Randomize
thevalue = Int((3 * 6 * Rnd) + 1)
Text1.Text = thevalue
Next x

Beste hilsen Harald

"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:a4bud6$p8l$1@news.cybercity.dk...
> Mikkel Bundgaard skrev:
> > Public Function giveThreeDice() As Integer
> > Randomize
> ...
> > End Function
>
> Lige en bemærkning: Man får ikke "mere" tilfældige tal af at bruge
> Randomize flere gange i sit program.
>
> Det er nok at bruge Randomize én gang.
>
> -------
> Tomas
>



Rasmus Ladekjær Pede~ (13-02-2002)
Kommentar
Fra : Rasmus Ladekjær Pede~


Dato : 13-02-02 17:24

> Jeg forsøger at lave et program som skal vise et vilkårligt tal mellem 3
og
> 18 (simulerer et terningeslag med 3 almindelige terninger).

Jeg ville bruge:
Dim tal As Integer
tal:
Randomize
tal = Rnd * 100
If tal < 3 Then
GoTo tal
End If
If tal > 18 Then
GoTo tal
End If

mvh Rasmus



Harald Staff (13-02-2002)
Kommentar
Fra : Harald Staff


Dato : 13-02-02 21:06

Hei Tina

Int(Rnd * 16) + 3

Prøv denne loopen -med statistik:

Sub Terninge()
Dim i As Integer
Dim resultat(1 To 20) As Integer
Dim slag As Integer
For i = 1 To 20000
Randomize
slag = Int(Rnd * 16) + 3
resultat(slag) = resultat(slag) + 1
Next
For i = 1 To 20
MsgBox resultat(i) & " " & i & "'ere"
Next
End Sub

HTH. Beste hilsen Harald


"Tina Hoffmann" <tina@archmail.com> wrote in message
news:kYaa8.6900$yU3.865233975@news.orangenet.dk...
> Jeg forsøger at lave et program som skal vise et vilkårligt tal mellem 3
og
> 18 (simulerer et terningeslag med 3 almindelige terninger). Jeg har
forsøgt
> med:
>
> Dim x As Integer
> Randomize
> For x = 3 To 18
> thevalue = Int((3 * 6 * Rnd) + 1)
> Text1.Text = thevalue
> Next x
>
> Men det er muligt at slå 1 og 2 når jeg kører programmet hvilket med
> virkelige terninger er umuligt. Hvordan kan man ændre i koden så det ikke
er
> muligt?
>
>



Carsten Jessen (13-02-2002)
Kommentar
Fra : Carsten Jessen


Dato : 13-02-02 22:04


"Tina Hoffmann" <tina@archmail.com> wrote in message
news:kYaa8.6900$yU3.865233975@news.orangenet.dk...
> Jeg forsøger at lave et program som skal vise et vilkårligt tal mellem 3
og
> 18 (simulerer et terningeslag med 3 almindelige terninger). Jeg har
forsøgt
> med:
>
> Dim x As Integer
> Randomize
> For x = 3 To 18
> thevalue = Int((3 * 6 * Rnd) + 1)
> Text1.Text = thevalue
> Next x
>
> Men det er muligt at slå 1 og 2 når jeg kører programmet hvilket med
> virkelige terninger er umuligt. Hvordan kan man ændre i koden så det ikke
er
> muligt?
>
>
>
Hej Tina
Blot en lille kommentar. Hvis du virkelig skal simulere terning kast skal du
lave det via 3 funktioner der hver finder et tal fra 1-6 og ikke en enkelt
der finder et tal mellem 3 og 18. Bruger du kun én funktion er der den samme
sandsynlighed for at slå fx. 11 og 18. I virkeligheden er 11 det mest
sansynlige og 18 det mindst sandsynlige.

MVH Carsten



Harald Staff (14-02-2002)
Kommentar
Fra : Harald Staff


Dato : 14-02-02 13:36

Ahhhh. Selvfølgelig. Tak for påminnelsen.

Beste hilsen Harald

"Carsten Jessen" <c.je@get2net.dkREMOVETHIS> skrev i melding
news:uwAa8.40$Xn2.42400877@news.orangenet.dk...
> Bruger du kun én funktion er der den samme
> sandsynlighed for at slå fx. 11 og 18.



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste