Box Generator / Sprache Smalltalk
 
StartSeite | BoxGenerator/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Klassenbeschreibung

 value
class nameRandbox
superclassObject
instance variable namesx y product first second available random
commentI generate gaussian random deviates

class methods

instance creation

new
 ^super new initialize

instance methods

instance initialization

initialize
  random := Random new.
  available := false

random number generation

next moves to the next element of the pseudo random sequence
  available  
    ifTrue: [ available := false ] 
    ifFalse: [ self generate ]

inquiry

lastGaussian returns a pseudo random deviate from the gaussian distribution
  ^available 
    ifTrue: [ first ] 
    ifFalse: [ second ]

private

randuniv returns a random deviate from a uniform distribution on the unit interval
  random next.
  ^random lastUniform

randpoint from a uniform distribution on the area of the unit circle
  product := 2 .
  [product <= 1] whileFalse: 
  [ 
    x := (self randuniv) * 2 - 1. 
    y := (self randuniv) * 2 - 1. 
    product := (x * x) + (y * y). 
  ]

generate two pseudo random deviates from a gaussian distribution
  | p |
  self randpoint.
  p := ((-2 * (product log)) / product) sqrt.
  available := true.
  first := p * x.
  second := p * y

Bemerkungen

Teile der Smalltalk Syntax, etwa die Klassendefinition, werden bei Smalltalk in eine dafür vorgesehene Text-Schablone innerhalb eines Code-Browsers eingegeben. Für den fertigen Code gibt es verschiedene Ablagemöglichkeiten und Formate.

Eine Implementation in SpracheSmalltalk ist deshalb nicht ohne weiteres in die Form eines Textes zu bringen. fett sind die Nachrichten angegeben, die zum Protokoll von Randbox gehören. kursiv sind die Protokollbeschreibungen der einzelnen Nachrichten aufgeführt. Die Informationen über die Klasse selbst stehen oben in tabellarischer Form. Die Kategorien des Protokolls von Randbox sind als Gliederung dieses Quelltextes angegeben.

Wenn es der verwendete Zeichensatz hergeben würde, wäre der :=-Operator ein Pfeil nach links und der ^-Operator ein Pfeil nach oben.

Die Lesart bei Smalltalk ist satzähnlich, wobei die Objekte die Subjekt sind und die Methoden die Prädikate. Ergebnis jeder Kombination aus Objekt und Methode ist wieder ein Objekt. Methoden ohne expliziten Rückgabewert liefern self (das Objekt, an das die Methode geschickt wurde). Bei Methoden mit Parametern muss man den "Satz" klammern, um sein Ergebnisobjekt weiterverwenden zu können. Da es keinen Operatorvorrang a la Punkt- vor Strichrechnung gibt, muss diese Klammerung in Rechnungen meist explizit erfolgen.


KategorieProgrammierBeispiele KategorieSmalltalk
StartSeite | BoxGenerator/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 24. November 2003 22:32 (diff))
Suchbegriff: gesucht wird
im Titel
im Text