Class: XORShift

Inherits:
Object
  • Object
show all
Defined in:
lib/intperm.rb

Overview

XOR shift helper class. Used for expanding the seed to a random stream.

Instance Method Summary collapse

Constructor Details

#initialize(seed, bitmask) ⇒ XORShift

Returns a new instance of XORShift.



50
51
52
53
54
# File 'lib/intperm.rb', line 50

def initialize(seed, bitmask)
  @seed = seed
  @a, @b, @c = TRIPLETS[seed % TRIPLETS.length]
  @bitmask = bitmask
end

Instance Method Details

#nextObject



56
57
58
59
60
# File 'lib/intperm.rb', line 56

def next
  @seed ^= @bitmask & (@seed << @a)
  @seed ^= @bitmask & (@seed >> @b)
  @seed ^= @bitmask & (@seed << @c)
end