2016-12-01 2 views
1

Ich brauche klassische Spiel Würfel (Werte 1-6) durch Rnd-Funktion zu simulieren. Meine Lösung ist Round(5 * Rnd() + 1, 0), aber wenn ich 1 Million Werte erzeuge, habe ich keine guten Ergebnisse (nach Bild). RESULTS HERE Ich denke, dieses Problem ist in schlechten Gebrauch der RUNDE-Funktion, aber ich weiß nicht wo. Vielen Dank für Ihre Antworten ...Runde Funktion VBA EXCEL

+0

Bitte korrigieren Sie mich, wenn ich falsch liege. Aber dieser Beitrag scheint ein Duplikat von [Ist Excel VBA's Rnd() wirklich so schlecht?] (Http://stackoverflow.com/questions/38891165/is-excel-vbas-rnd-really-this-bad) (mit eine ausgezeichnete Antwort). Aber ich kann mir nicht sicher sein, da ich in Ihrem Beitrag keine Frage sehen kann. Beachten Sie auch, dass 'Rnd()' zuerst initialisiert werden muss: http://stackoverflow.com/questions/26281011/excel-vba-rnd-not-actually-random – Ralph

Antwort

5

Schauen wir uns das Stück für Stück an.

Rnd() gibt eine Zahl zwischen 0 und 1.

So 5 * Rnd() + 1 eine Zahl zwischen 1 und 6 gibt

Wir dieser Zahl als gleich wahrscheinlich denken kann in einem von 10 halbzahligem sein Bereiche: [1,1,5], [1,5,2] ... [5,5,6].

Eine davon wird auf 1 - [1,1,5] runden.

Zwei davon runden auf 2 - [1,5,2] und [2,2,5].

3, 4 und 5 haben in ähnlicher Weise zwei von denen, die zu ihnen runden werden.

Einer davon wird auf 6 runden - [5.5,6]

Dies erklärt die Verteilung Sie sehen.

Daher sollte geben Sie, was Sie suchen, wie es die Fläche um die Hälfte in beiden Richtungen erweitert, so gibt 1 und 6 die richtigen Gewichtungen.

1

Haben Sie versucht randzwischen() ?? funktionierte gut für mich ...

+0

Yop, Randbetween ist auch eine gute Lösung ... –