anchor.diff:  -define(SEED_DICT, random_seed).
   
   -record(alg, {type=?DEFAULT_ALG_HANDLER :: alg(),
  -	      seed :: fun(),
   	      uniform :: fun(), uniform_n :: fun()}).
   
   %% =====================================================================
  
positive.code: 
  %% Setup alg record
  mk_alg(as183) ->  %% DEFAULT_ALG_HANDLER
      #alg{type=as183, seed=fun as183_seed/1,
  	 uniform=fun as183_uniform/1, uniform_n=fun as183_uniform/2};
  mk_alg(exs64) ->
      #alg{type=exs64, seed=fun exs64_seed/1,
  	 uniform=fun exs64_uniform/1, uniform_n=fun exs64_uniform/2};
  mk_alg(exsplus) ->
      #alg{type=exsplus, seed=fun exsplus_seed/1,
  	 uniform=fun exsplus_uniform/1, uniform_n=fun exsplus_uniform/2};
  mk_alg(exs1024) ->
      #alg{type=exs1024, seed=fun exs1024_seed/1,
  	 uniform=fun exs1024_uniform/1, uniform_n=fun exs1024_uniform/2};
  mk_alg(sfmt) ->
      #alg{type=sfmt, seed=fun sfmt_seed/1,
  	 uniform=fun sfmt_uniform/1, uniform_n=fun sfmt_uniform/2};
  mk_alg(tinymt) ->
      #alg{type=tinymt, seed=fun tinymt_seed/1,
  	 uniform=fun tinymt_uniform/1, uniform_n=fun tinymt_uniform/2}.
  
  
  %% =====================================================================
  
negative.code: 		       state().
  
  make_seed(Alg0, S0 = {_, _, _}) ->
      {Alg, Seed} = mk_alg(Alg0),
      AS = Seed(S0),
      _ = seed_put({Alg, AS}),
      {Alg, AS}.
  