Class: Odin::Transform::Verbs::Mulberry32

Inherits:
Object
  • Object
show all
Defined in:
lib/odin/transform/verbs/numeric_verbs.rb

Overview

Mulberry32 seeded PRNG

Instance Method Summary collapse

Constructor Details

#initialize(seed) ⇒ Mulberry32

Returns a new instance of Mulberry32.



10
11
12
# File 'lib/odin/transform/verbs/numeric_verbs.rb', line 10

def initialize(seed)
  @state = seed & 0xFFFFFFFF
end

Instance Method Details

#next_floatObject



14
15
16
17
18
19
20
21
# File 'lib/odin/transform/verbs/numeric_verbs.rb', line 14

def next_float
  @state = (@state + 0x6D2B79F5) & 0xFFFFFFFF
  t = @state
  t = ((t ^ (t >> 15)) * (t | 1)) & 0xFFFFFFFF
  t = (t ^ (t + (((t ^ (t >> 7)) * (t | 61)) & 0xFFFFFFFF))) & 0xFFFFFFFF
  t = (t ^ (t >> 14)) & 0xFFFFFFFF
  t / 4294967296.0
end

#next_int(range) ⇒ Object



23
24
25
# File 'lib/odin/transform/verbs/numeric_verbs.rb', line 23

def next_int(range)
  (next_float * range).floor
end