On Mon, Apr 6, 2015 at 3:01 AM, Stefan Marr <smallt...@stefan-marr.de> wrote:
> Hi: > > > On 03 Apr 2015, at 17:44, Eliot Miranda <eliot.mira...@gmail.com> wrote: > > > > seed := ((seed + 16r7ed55d16) + (seed << 12)) & 16rffffffff. > > seed := ((seed ^ 16rc761c23c) ^ (seed as32BitSignedValue >>> 19)) & > 16rffffffff. > > seed := ((seed + 16r165667b1) + (seed << 5)) & 16rffffffff. > > seed := ((seed + 16rd3a2646c) ^ (seed << 9)) & 16rffffffff. > > seed := ((seed + 16rfd7046c5) + (seed << 3)) & 16rffffffff. > > seed := ((seed ^ 16rb55a4f09) ^ (seed as32BitSignedValue >>> 16)) & > 16rffffffff. > > ^ seed as32BitSignedValue > > Ok, my implementation looks now like this: > > random > "Robert Jenkins' 32 bit integer hash function." > seed := ((seed + 16r7ed55d16) + (seed << 12)). > seed := ((seed bitXor: 16rc761c23c) bitXor: ((seed bitAnd: > 16rffffffff) >> 19)). > seed := ((seed + 16r165667B1) + (seed << 5)). > seed := ((seed + 16rd3a2646c) bitXor: (seed << 9)). > seed := ((seed + 16rfd7046c5) + (seed << 3)). > seed := self as32BitSigned: ((seed bitXor: 16rb55a4f09) bitXor: ((seed > bitAnd: 16rffffffff) >> 16)). > ^ seed > > > as32BitSigned: val > | r | > r := val bitAnd: 16rffffffff. > (r bitAnd: 16r80000000) = 0 ifTrue: [ ^ r ]. > ^ (16r100000000 - r) * -1 > > The #as32BitSigned: looks a little naive, but didn’t have any better idea. > > And Andres, the random number generator is a given, I can’t just change it. > > > On Sat, Apr 4, 2015 at 2:49 PM, Andres Valloud < avall...@smalltalk.comcastbiz.net> wrote: > > > Lagged Fibonacci RNGs are much more Smalltalk friendly, I'd use those. > > Or maybe you can substitute a Lagged Fibonacci RNGs back into the Java (If a more favourable comparison ends up being needed). cheers -ben