• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Dobbelsteen marco

Status
Niet open voor verdere reacties.

Ervell

Gebruiker
Lid geworden
14 jun 2005
Berichten
48
Ik heb voor mezelf een marco gemaakt die het gooien van een dobbelsteen moet voorstellen. De basis hiervoor is de volgende regel.

Round(Rnd() * (6.5 - 0.5) + 0.5, 0)

Is er iemand die een slimmere oplossing heeft :thumb:
of mij kan bevestigen dat met deze regel de kansen op 1, 2, 3, 4, 5 en 6 gelijk zijn.:)

Verder heb ik het idee dat de worp vak een 5 opleverd, toeval?

Ervell
 
Gebruik

Code:
Range("A1") = Int(6 * Rnd + 1)

1 t.e.m. 6 hebben echt wel een gelijke kans om voor te komen.

Wigi
 
Ik heb het geprobeerd en .............

het werkt.

Bedankt.

Heb je misschien nog kleine uitleg waarom het ene wel en het andere niet "eerlijk" werkt?


Groeten ervell
 
Heb je misschien nog kleine uitleg waarom het ene wel en het andere niet "eerlijk" werkt?

Dat werkt wel eerlijk...

Doe maar eens

Code:
Sub randomn()
Application.Calculation = xlCalculationManual
For i = 1 To 65000
    Application.StatusBar = i
    Range("A" & i) = Round(Rnd() * (6.5 - 0.5) + 0.5, 0)
Next
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = ""
End Sub

en dan de percentages berekenen voor elk getal. Ze liggen alle 6 in de buurt van 100/6 = 16,66%

Overtuigd? :D

Wigi
 
Laatst bewerkt:
begrijp ik goed dat beide methoden even goed zijn?

Verder heeft u mij met de laatse reactie goed geholpen met een onderdeel dat ik nodig heb om de marco verder uit te bouwen. Ik mis namelijk een opleiding en een naslagwerk op dit gebied.:thumb:


groeten Ervell
 
begrijp ik goed dat beide methoden even goed zijn?

Al vind ik mijn methode simpeler, ze zijn even goed. Wat je kan doen is de tijd meten dat Excel erover doet om bv. 65000 getallen te zetten, met beide methodes. Diegene die het snelste is wint :) Ben ik zelf ook wel eens benieuwd naar of er een verschil is. Kan zijn dat ik een macro schrijf voor de tijdmeting.

Ik mis namelijk een opleiding en een naslagwerk op dit gebied.

Ik heb al meerdere keren op het forum hier aangegeven wat degelijke Excel / VBA sites zijn, en welke boeken interessant. Zoek het forum af en je vindt interessante voorstellen. Wat voorstellen in mijn posts betreft, ik ben hier sinds 6 april actief, dus op eerdere datums moet je niet zoeken voor posts van mij (niet dat er geen interessante posts zijn vóór 6 april, maar dan niet van mij afkomstig)

Wigi
 
Aan een tijdsmeting kom ik niet toe en is voor mijn toepassing nog niet interresant.
Ik geef de voorkeur aan de minst ingewikkelde formule en dan wint de integer manier

Ik zal een gaan zoeken naar de Excell VBA tips


Nogmaals bedankt.


Ervell
 
Dat was ook niet de bedoeling voor jou. Ik was gewoon zelf nieuwsgierig :)

Voer eerst deze code uit:

Code:
Sub randomn()
timing = Timer
For i = 1 To 65500
    Range("A" & i) = Round(Rnd() * (6.5 - 0.5) + 0.5, 0)
Next
MsgBox Format(Timer - timing, "0.00") & " seconden"
End Sub

en dan deze code:

Code:
Sub randomn()
timing = Timer
For i = 1 To 65500
    Range("A" & i) = Int(6 * Rnd + 1)
Next
MsgBox Format(Timer - timing, "0.00") & " seconden"
End Sub

Op mijn (traag) systeem:

jouw methode: 19,2 sec
mijn methode: 21,8 sec

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan