module FFaker::Random

def self.new_rng

Returns a new Random object instantiated with #seed.
def self.new_rng
  ::Random.new(seed)
end

def self.rand(max = nil)

Returns a random number using an RNG with a known seed.
def self.rand(max = nil)
  if max
    rng.rand(max)
  else
    rng.rand
  end
end

def self.reset!

Reset the RNG back to its initial state.
def self.reset!
  @rng = new_rng
end

def self.rng

Returns the current Random object.
def self.rng
  @rng ||= new_rng
end

def self.seed

Returns the current RNG seed.
def self.seed
  @random_seed ||= ::Random.new_seed
end

def self.seed=(new_seed)

Sets the RNG seed and creates a new internal RNG.
def self.seed=(new_seed)
  @random_seed = new_seed
  reset!
  new_seed
end