anchor.diff:  -module(rand).
   
   -export([seed_s/1, seed_s/2, seed/1, seed/2,
  -	 export_seed/0, export_seed/1,
  +	 export_seed/0, export_seed_s/1,
            uniform/0, uniform/1, uniform_s/1, uniform_s/2]).
   
   -compile({inline, [exs64_next/1, exsplus_next/1,
  
positive.code: -type alg_seed() :: any().
  %% This is the algorithm handler function within this module
  -type alg_handler() :: #{type      => alg(),
  			 next      => fun(),
  			 max       => integer()}.
  
  %% Internal state
  -type state() :: {alg_handler(), alg_seed()}.
  
negative.code: 	_ -> undefined
      end.
  
  -spec export_seed_s(state()) -> {alg(), alg_seed()}.
  export_seed_s({#{type:=Alg}, Seed}) -> {Alg, Seed}.
  
  %% seed(Alg) seeds RNG with runtime dependent values
  %% and return the NEW state
  