[Monkey] Rand

Übersicht Andere Programmiersprachen Codearchiv & Module

Neue Antwort erstellen

 

BBPro2

Betreff: Rand

BeitragDi, Aug 21, 2012 2:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier eine gleichverteilte Zufallsfunktion für Integer unter Monkey.
Verwendet man einfach die gegebene Rnd (a, b) von Monkey erhält
man aufgrund von seltsamen Rundungseigenschaften Monkeys keine
gleichverteilung und teilweise sehr seltsame Ergebnisse
z.B. enthält x bei

Local x: Int = Rnd (-1, 1)

mit einer Wahrscheinlichkeit von (2^32 - 1) / 2^32
die Zahl 0
und mit der vernachlässigbaren WK von 1 / 2^32 (also quasi NIE)
die Zahl -1

Hier die entsprechenden Funktionen für Integer unter Monkey.
Die Verteilung ist absolut gleichverteilt von low bis (high-1)

Code: [AUSKLAPPEN]

'summary: Returns either 0 or 1.
Function Rand: Int ()
   Return Rand (0, 2)
End

'summary: Returns a random int in the range 0 (inclusive) to range (exclusive).
Function Rand: Int (range: Int)
   Return Rand (0, range)
End

'summary: Returns a random int in the range low (inclusive) to high (exclusive).
Function Rand: Int (low: Int, high: Int)
   Local v: Float = Rnd (low, high)
   if (v < 0) Then v -= 1.0
   Local vi: Int = Int (v)
   if vi = (low - 1) Then vi = Min (-1, high)
   Return vi
End

DAK

BeitragDi, Aug 21, 2012 8:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Würds nicht mehr Sinn machen, high und low inklusive zu machen?
Gewinner der 6. und der 68. BlitzCodeCompo
 

BBPro2

BeitragDi, Aug 21, 2012 8:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Standardmässig ist low inklusive und high exklusive und daher
habe ich mich einfach an diesen Standard gehalten.

Beziehe mich hierbei auf das Verhalten von Rnd in Monkey, Java und C++

In BB/B+/B3d ist es tatsächlich inklusive soweit ich weiß.
Wie es in BMax ist weiß ich nicht.

Aber da Rnd in Monkey incl-excl. ist sollte sich Rand wohl am Besten genauso verhalten

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group