Hi:
On 03 Apr 2015, at 17:44, Eliot Miranda <eliot.miranda@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. Best regards Stefan -- Stefan Marr INRIA Lille - Nord Europe http://stefan-marr.de/research/