Code archives/Algorithms/Von Neumann Random Numbers Generator
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
This is a simple implementation of the Von Neumann random numbers generator function. It can generate integer and double numbers. Have fun. | |||||
'Von Neumann Random Numbers Generator 'getnumber() returns a number between 0 and 1 'rnddouble(min, max) return a double number between min and max 'rnd(min, max) return an integer number between min and max ''CLASS: Type TRandom Field seed:Double Field last:Double Function create:TRandom(sd:Double) Local r:TRandom=New TRandom r.seed=sd r.last=sd Return r End Function Method setseed(sd:Double) self.seed=sd End Method Method getnumber:Double() Local n:Double=(16807*self.last+0) Mod 2147483647 self.last=n n=n/2147483646 Return n End Method Method RndDouble:Double(s:Double, e:Double) Local n:Double=self.getnumber() n=(e-s)*n+s Return n End Method Method Rnd:Int(s:Double, e:Double) Local n:Double=self.getnumber() n=(e-s)*n+s Local st:String=String(n) Local start=st.find(".") st=Mid(st, start+2, 1) Local n2:Int=Int(st) If n2>=5 n=Ceil(n) Else n=Floor(n) EndIf Return Int(n) End Method End Type ''EXAMPLE: Global a:TRandom=TRandom.create(MilliSecs()) For i=0 To 100 Print a.rnd(0, 100) Next |
Comments
None.
Code Archives Forum